KnpLabs/DoctrineBehaviorsの Translatable trait をCategory エンティティの「プロキシ翻訳」で使用しているため、プロパティ「name」を含む CategoryTranslation エンティティがあります。すべてのカテゴリのリストを取得したい場合は、 symfony のデバッグ ツールバーは、ページが何千ものクエリを実行し、読み込みに 5 秒以上かかったと教えてくれます。
これは私のコードです:
$categories = $this->getDoctrine()
->getManager()
->getRepository('OylexCategoryBundle:Category')
->findAll();
$categoryList = array();
foreach ($categories as $category) {
$categoryList[] = array(
'id' => $category->getId(),
'name' => $category->getName(),
);
}
//To output as json
ご覧のとおり、この行'name' => $category->getName(),
は foreach ループの反復ごとに新しいクエリを作成しています。
「名前」プロパティがカテゴリと一緒にフェッチされるように変換テーブルに参加する方法はありますか?
私はこれを試しましたが、それでも呼び出しごとにクエリを実行しています:
$categories = $this->getDoctrine()
->getManager()
->getRepository('OylexCategoryBundle:Category')
->createQueryBuilder('c')
->select(array('c'))
->leftJoin('OylexCategoryBundle:CategoryTranslation', 'ct', 'WITH', 'c.id = ct.translatable AND ct.locale = \'en\'')
->getQuery()
->getResult();
ありがとう、