私は2つのエンティティを持っています:Category
そしてIcon
それらは多対多の関係を持っているので、私は3つのテーブルになります:category
icon
そしてicon_category
私の目標は、複数のカテゴリにあるアイコンを見つけることです。
たとえば、私は次のものを持っています
カテゴリ:a
b
c
およびアイコン1
2
3
アイコンのカテゴリは次のとおりです。
1
-a
b
2
-a
3
-c
a
カテゴリにあるアイコンを検索して結果としてb
取得したいと思います1
。
私の最初のアプローチは、各カテゴリ (a
およびb
) を個別の結果にロードし、次を使用して比較することでしたarray_intersect()
。
$cats = array();
foreach($terms as $term){
$cat = $em->getRepository('SixStringPearBundle:Category')->findOneBy(array("name" => $term));
if($cat){
$cats[$term] = $cat->getIcons();
}
}
これが戻ってき$cats[a] = array(icon(1), icon(2)
て、$cats[b] = array(icon(1))
次に、次のことを試しました。
$res = array_shift($cats);
foreach($cats as $cat){
$res = array_intersect($res, $cat);
}
しかし、次のエラーが発生しました:Argument #1 is not an array
$cat[a]
andのタイプを確認しました$cat[b]
が、それらは Doctrine Persistence Collection です
$res = $res->toArray()
私も呼び出しを試みましたが、呼び出す$cat = $cat->toArray()
前にarray_intersect
これによりエラーは解決されましたが、期待される結果は返されませんでした:Icon(1)
誰かが何か考えを持っていますか、あるいはこれらすべてに対するより良いアプローチさえありますか?