如果你想不要让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。
评论
发表评论