2016-11-09 18 views
1

は、配列のインデックスとして使用する必要があります。Symfony2のfindBy + INDEXBY

$qb = $em->createQueryBuilder(); 
$qb->select('s'); 
$qb->from('models\Settings', 's', 's.key'); // here the magic 
$result = $qb->getQuery()->getResult(); 
//here $result[key] is entity 

誰もがfindByにINDEXBY(ないDBではなく、結果の配列のインデックス)を追加する方法を知っています方法、またはリポジトリのfindByのような方法を作る、のようなもの:私は必要

$clients = $clientRepository->findBy(['id' => $clients], [indexBy=>id]); 

OR

$clients = $clientRepository->myFindByWithIndexBy(['id' => $clients], 'id'); 

メソッドでフィルタ条件を指定すると、idでインデックスされたエンティティが返されます。

+0

「indexBy'がDBにない」とはどういう意味ですか? – Veve

+0

@Veve indexByはDBに全く関係していないことを意味します。 IndexByはインデックスで配列順で、DBでは順序ではありません。http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html#high-level-api-methods – Crusader

答えて

-1

findByの第2引数は、結果を並べ替えるためのものです(データベースコンテキストでのインデックス作成は別のものです)。

$repo->findBy(['id'=>$clients], ['id'=>'asc']); // reverse by changing 'asc' to 'desc'