Запрос с множественной идентификацией Symfony2 Doctrine У меня есть массив идентификаторов, и я хотел бы получить массив сущностей из массива ID. Я не могу использовать find. Запрос sql выглядит так: SELECT * FROM mytable WHERE id = 12 OR id = 10 ... с циклом в моем массиве id. Ответ 1 Как насчет использования класса 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)'); Ответ 2 Вы также можете получить его непосредственно из репозитория: $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')); Ответ 3 Просто используйте: $em->getRepository('YourBundle:YourEntity')->findById(array(1, 2, 3, 4)); Массивы поддерживаются как параметры. Ответ 4 Если вы не хотите использовать магические методы, вместо использования этой рабочей части кода: $em->getRepository('AppBundle:FooEntity')->findById([1, 2, 3]); ... вы можете использовать это: $em->getRepository('AppBundle:FooEntity')->findBy(['id' => [1, 2, 3]]); Эффект тот же.
Ответ 1 Как насчет использования класса 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)');
Ответ 2 Вы также можете получить его непосредственно из репозитория: $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'));
Ответ 3 Просто используйте: $em->getRepository('YourBundle:YourEntity')->findById(array(1, 2, 3, 4)); Массивы поддерживаются как параметры.
Ответ 4 Если вы не хотите использовать магические методы, вместо использования этой рабочей части кода: $em->getRepository('AppBundle:FooEntity')->findById([1, 2, 3]); ... вы можете использовать это: $em->getRepository('AppBundle:FooEntity')->findBy(['id' => [1, 2, 3]]); Эффект тот же.