Ajo*_*uve 38 symfony doctrine-orm
我有一个ID数组,我想从我的ID数组中获取一个实体数组.
我不能用find.
sql请求如下所示:
SELECT * FROM mytable WHERE id = 12 OR id = 10 ...
Run Code Online (Sandbox Code Playgroud)
我的id数组上有一个循环.
小智 98
您也可以直接从存储库获取它:
$em->getRepository('YourRepo')->findById(array(1,2,3,4,5));
Run Code Online (Sandbox Code Playgroud)
你也可以在get no tin数组中传递参数,但是用逗号粘贴的简单字符串
?ids=1,2,3,4,56
Run Code Online (Sandbox Code Playgroud)
然后从$ request获得它
$em->getRepository('YourRepo')->findById(explode(',', $request->get('ids'));
Run Code Online (Sandbox Code Playgroud)
man*_*nix 36
如何使用QueryBuilder类:
$qb = $em->createQueryBuilder();
$qb->select('m');
$qb->from('MyEntity', 'm');
$qb->where($qb->expr()->in('m.id', array(12, 10)));
//ArrayCollection
$result = $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)
或者DQL:
$query = $em->createQuery('SELECT m FROM MyTable m WHERE m.id IN(12, 10)');
Run Code Online (Sandbox Code Playgroud)
flu*_*flu 21
只需使用:
$em->getRepository('YourBundle:YourEntity')->findById(array(1, 2, 3, 4));
Run Code Online (Sandbox Code Playgroud)
支持数组作为参数.
The*_*ost 21
如果您不想使用魔术方法,而不是使用这段工作代码:
$em->getRepository('AppBundle:FooEntity')->findById([1, 2, 3]);
Run Code Online (Sandbox Code Playgroud)
......你可以用这个:
$em->getRepository('AppBundle:FooEntity')->findBy(['id' => [1, 2, 3]]);
Run Code Online (Sandbox Code Playgroud)
效果是一样的.