【发布时间】:2016-06-24 00:06:39
【问题描述】:
在 Symfony 中,我有一个带有 Select 选项的表单,其中包含一些作者的书名,例如:
->add('title', EntityType::class, [
'class' => 'AppBundle:Title',
'choice_label' => 'fullTitle',
'query_builder' => function (EntityRepository $er) {
$queryBuilder = $er->createQueryBuilder('title');
$queryBuilder
->select('title')
->innerJoin('title.author', 'author')
->addOrderBy('author.name', 'ASC')
->addOrderBy('title.title', 'ASC');
return $queryBuilder;
},
'label' => 'fields.title.title'
])
我想以这种方式显示作者姓名和标题名称:“作者>标题”。我设法通过使用“fullTitle”选择标签并在 Title 实体中使用这个 hack 来做到这一点:
public function getFullTitle()
{
return $this->getAuthor()->getSurname() . ', ' . $this->getAuthor()->getName() . ' > ' . $this->getTitle();
}
但这在很多方面都很糟糕,特别是在性能方面。 因此,我尝试使用 CONCAT 在查询中构建“作者 > 标题”字符串,但似乎无法使用查询生成器完成。
我查看了文档,所有示例都是关于一个没有连接的实体。
提前致谢:)
【问题讨论】:
标签: php symfony doctrine-orm