$data = $this
->entityManager
->getRepository('io\V1\Rest\Advertisers\AdvertisersEntity')
->findBy(
array('camapId' => '1465' , 'campName'=>'mytest')
);
这里想要添加条件camapId='1465' OR campName like '%mytest%'
而不是camapId='1465' AND campName ='mytest'
有没有办法实现这个目标?。
答案 0 :(得分:1)
如果使用Doctrine2 DQL或Doctrine2 QueryBuilder,则可以使存储库中的搜索条件变得复杂。您可以在Doctrine文档中找到有关此here (DQL)和here (QueryBuilder)的内容。
网上有很多关于如何使用DQL和QueryBuilder来达到结果的例子。
我认为它会是这样的:
$data = $this->createQueryBuilder('a')
->where('a.camapId = 1465')
->orWhere('a.campName = mytest')
->getQuery()
->getResult();
答案 1 :(得分:0)
$campIdsToFilter = $campIdsToFilterArray =array();
$query = $this->entityManager->createQuery("SELECT DISTINCT a.campId FROM io\V1\Rest\Advertisers\AdvertisersEntity a where a.campName like'%mytest%' OR a.campId=1465");
$campIdsToFilter = $query->getResult();
foreach($campIdsToFilter as $ke=> $value){
$campIdsToFilterArray[] =$value;
}
$data = $this
->entityManager
->getRepository('io\V1\Rest\Advertisers\AdvertisersEntity')
->findBy(
array('campId' => $campIdsToFilterArray) ,
$pageSize, // limit
$pageSize * ($page - 1) // offset
);