加载来自symfony2父实体中的连接的字段结果

时间:2012-11-21 10:43:36

标签: symfony doctrine-orm twig

有没有人知道将连接字段的结果加载到父实体的方法?

我需要这个的例子,在我的文章实体中。 一篇文章可以有多个翻译,但应根据所选的区域设置加载一个。

文本和标题字段是从文章翻译包中加载的,它们在我的文章实体中不存在。

加载所有字段不是问题,在我的articleRepository中是以下代码:

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

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

返回的查询是包含所有文章字段和翻译字段的单行。

是否可以访问twig中的翻译字段,如:{{article.text}}?

我尝试添加私人$ title;到我的文章实体,但var_dump显示一个值null。

1 个答案:

答案 0 :(得分: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'];
}