IDの配列があり、ID配列からエンティティ配列を取得したいです。
Findを使用できません。
SQL要求は次のようになります。
SELECT * FROM mytable WHERE id = 12 OR id = 10 ...
私のID配列のループで。
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)');
リポジトリから直接取得することもできます:
$em->getRepository('YourRepo')->findById(array(1,2,3,4,5));
また、tin配列を取得せずに、コンマで接着された単純な文字列でパラメーターを渡すことができます
?ids=1,2,3,4,56
その後、$ requestから取得します
$em->getRepository('YourRepo')->findById(explode(',', $request->get('ids'));
単に使用します:
$em->getRepository('YourBundle:YourEntity')->findById(array(1, 2, 3, 4));
配列はパラメーターとしてサポートされています。
この作業コードを使用する代わりに、マジックメソッドを使用したくない場合:
$em->getRepository('AppBundle:FooEntity')->findById([1, 2, 3]);
...これを使用できます:
$em->getRepository('AppBundle:FooEntity')->findBy(['id' => [1, 2, 3]]);
効果は同じです。