0

結合フィールドの結果を親エンティティにロードする方法を知っている人はいますか?

これが必要な例は、記事エンティティにあります。記事には複数の翻訳を含めることができますが、選択したロケールに従って 1 つを読み込む必要があります。

テキスト フィールドとタイトル フィールドは記事の翻訳バンドルから読み込まれますが、記事エンティティには存在しません。

すべてのフィールドをロードすることは問題ではありません。私の記事では、Repository は次のコードです。

....
$oQueryBuilder->select('a, tr');
$oQueryBuilder->from('CommonArticleBundle:Article', 'a');
$oQueryBuilder->andWhere('a.active = 1');

$oQueryBuilder->leftJoin('a.translations', 'tr');
$oQueryBuilder->andWhere('tr.language = 2');
.........

返されるクエリは、すべての記事フィールドと翻訳フィールドを含む 1 つの行です。

{{ article.text }} のような小枝の翻訳フィールドにアクセスすることは可能ですか?

プライベート $title; を追加しようとしました。私の記事エンティティに、しかし var_dump は値 null を示しています。

4

1 に答える 1

1

やってみました:

$oQueryBuilder->select(array('a.id', 'tr.title', 'tr.text'));
$articles = $oQueryBuilder->getQuery()->getArrayResult();

次に、次のような最初の記事フィールドを読み取ります。

$article[0]['title'];

子エンティティが必要な場合は、次のこともできます。

$oQueryBuilder->select(array('a.id', 'tr.title', 'tr.text', 's'));
$oQueryBuilder->leftJoin('a.sessions', 's');

その後:

$sessions = $article[0]['sessions'];
foreach ($sessions as $s)
{
    $text = $s['text'];
}
于 2012-11-21T14:11:28.390 に答える