J'ai un tableau d'ID et j'aimerais obtenir un tableau d'entités de mon tableau d'ID.
Je ne peux pas utiliser find.
La requête SQL ressemble à ceci:
SELECT * FROM mytable WHERE id = 12 OR id = 10 ...
avec une boucle sur mon tableau d'identification.
Que diriez-vous d'utiliser la classe 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();
Ou DQL:
$query = $em->createQuery('SELECT m FROM MyTable m WHERE m.id IN(12, 10)');
Vous pouvez également l'obtenir directement à partir du référentiel:
$em->getRepository('YourRepo')->findById(array(1,2,3,4,5));
Vous pouvez également passer des paramètres dans get no tin array, mais dans une simple chaîne collée par des virgules
?ids=1,2,3,4,56
Et après cela, obtenez-le à partir de $ request
$em->getRepository('YourRepo')->findById(explode(',', $request->get('ids'));
Utilisez simplement:
$em->getRepository('YourBundle:YourEntity')->findById(array(1, 2, 3, 4));
Les tableaux sont pris en charge en tant que paramètres.
Dans le cas où vous ne souhaitez pas utiliser de méthodes magiques, au lieu d'utiliser ce morceau de code de travail:
$em->getRepository('AppBundle:FooEntity')->findById([1, 2, 3]);
... vous pouvez utiliser ceci:
$em->getRepository('AppBundle:FooEntity')->findBy(['id' => [1, 2, 3]]);
L'effet est le même.