私は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)
誰かが何か考えを持っていますか、あるいはこれらすべてに対するより良いアプローチさえありますか?