如果你想不要让doctrine 为每一个related one to many 或者many to many 生成一个sql的话,只能直接写DQL
比如:
$qb=$em->getRepository('AcmeBannieresBundle:TVille')->createQueryBuilder('tv');
$qb->leftJoin('tv.codep', 'cp')
->leftJoin('tv.departement', 'dep')
->where('dep.code = :codep')
->setParameter('codep', $codep);
$cities=$qb->getQuery()->execute();
是不行的,每次你要读codep的时候它都要query一把,dql可以解决这一点:
$query=$em->createQuery('SELECT tv,cp FROM AcmeBannieresBundle:TVille tv LEFT JOIN tv.codep cp LEFT JOIN tv.departement dep WHERE dep.code= :codep')
->setParameter('codep', $codep);
$cities=$query->getResult();
这个就只执行一个sql。
评论
发表评论