Symfony2 プロジェクトで Gedmo ツリーを使用しています。
$em = $this->getDoctrine()->getEntityManager();
$options = array(
'decorate' => true,
'rootOpen' => '<ul>',
'rootClose' => '</ul>',
'childOpen' => '<li>',
'childClose' => '</li>',
'nodeDecorator' => function($node) {
return '<a class="menu" href="#">'.$node['name'].'</a>';
}
);
$category = $em->getRepository('MyMainBundle:Category')->childrenHierarchy(
null, /* starting from root nodes */
false, /* load all children, not only direct */
$options
);
print_R($category);
動作しますが、問題はフィールド名が翻訳可能であることです。カテゴリ テーブルでは NULL で、値は category_translations テーブルに保存されますが、私のコードはカテゴリ テーブルのフィールドのみを返します。
リスナーを追加しようとしました:
$evm = new \Doctrine\Common\EventManager();
$translatableListener = new \Gedmo\Translatable\TranslatableListener();
$translatableListener->setTranslatableLocale('en');
$evm->addEventSubscriber($translatableListener);
そして変更:
$em = $this->getDoctrine()->getEntityManager();
と:
$em = $this->getDoctrine()->getEntityManager(null,null,$evm);
しかし、助けにはなりませんでした。
クエリ ヒントについて読んでください。ただし、それを使用するクエリはありません。