40

我有一个 ID 数组,我想从我的 ID 数组中获取一个实体数组。

我无法使用查找。

sql 请求如下所示:

SELECT * FROM mytable WHERE id = 12 OR id = 10 ...

在我的 id 数组上有一个循环。

4

5 回答 5

104

您也可以直接从存储库中获取它:

$em->getRepository('YourRepo')->findById(array(1,2,3,4,5));

您也可以在 get no tin array 中传递参数,但使用逗号粘合的简单字符串

?ids=1,2,3,4,56

然后从 $request 中获取

$em->getRepository('YourRepo')->findById(explode(',', $request->get('ids'));
于 2013-11-06T15:05:36.647 回答
38

如何使用 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();

或 DQL:

$query = $em->createQuery('SELECT m FROM MyTable m WHERE m.id IN(12, 10)');
于 2013-11-06T14:50:59.397 回答
27

如果您不想使用魔术方法,而不是使用这段工作代码:

$em->getRepository('AppBundle:FooEntity')->findById([1, 2, 3]);

...你可以使用这个:

$em->getRepository('AppBundle:FooEntity')->findBy(['id' => [1, 2, 3]]);

效果是一样的。

于 2017-02-23T07:43:52.940 回答
20

只需使用:

$em->getRepository('YourBundle:YourEntity')->findById(array(1, 2, 3, 4));

支持数组作为参数。

于 2014-11-19T13:21:31.097 回答
0

与实体类一起使用:

$em->getRepository(Entity::class)->findById($ids); //$ids is array
于 2020-05-26T16:22:05.117 回答