我正在使用带有symfony的doctrine和我在Entity Advert中创建的2个方法来加载数据
public function getAdvertAccordingToCategories(array $categories){
$qb = $this -> createQueryBuilder('a');
$qb->join('a.categories' , 'cat')
->addSelect('cat');
$qb->where($qb->expr()->in('cat.name', $categories));
return $qb ->getQuery()->getResult();
}
public function getAdvertWithContributions(){
$qb = $this -> createQueryBuilder('a')
->leftJoin('a.condidatures' , 'cond')
->addSelect('cond');
return $qb->getQuery()->getResult();
}
我从控制器中调用它们
$listAdverts = $em ->getRepository('boudaplatformBundle:Advert')->getAdvertWithContributions();
$advertTest = $em ->getRepository('boudaplatformBundle:Advert')->getAdvertAccordingToCategories(array('xxx' , 'yyy'));
如果我使用带有参数的第二种方法,任何广告都像xxx一样,yyy一切都很好,第一种方法不返回任何东西,第二种方法返回我的广告实体和她的类别
$listAdverts = $em ->getRepository('boudaplatformBundle:Advert')->getAdvertWithContributions();
$advertTest = $em ->getRepository('boudaplatformBundle:Advert')->getAdvertAccordingToCategories(array('Games' , 'anime'));
当我使用类别参数时,广告是我的一部分,我有相同的广告,但当我循环广告的类别时,我发现只传递参数:游戏和动漫“两种方法”
我真的不明白为什么在第二种情况下,即使从getAdvertWithContributions()检索的数据被修改,我也应该收到相同的结果