我有一个表格,其中包含3个字段中的人名:“lastname”,“firstname”,“middlename”。 我需要通过createQueryBuilder()方法或其他方式连接所有3个字段。 我的代码如下所示:
$formMapper->add('collaborator', 'entity', array
(
'label' => 'acme.admin.person',
'empty_value' => '',
'class' => 'AcmeCoreBundle:Person',
'query_builder' => function ($repository) {
return $repository
->createQueryBuilder('p')
->where('p.status = 1')
->orderBy('p.lastname', 'ASC');
},
'property' => 'lastname'
)
);
当然,现在它只返回“姓氏”。 如何修改它以获得我需要的结果?
答案 0 :(得分:1)
一种方法是在Person
实体中定义一个未映射的属性,让我们说$titleConcat
现在为该属性创建一个getter并连接所有要显示的3个属性
protected $titleConcat;
public function getTitleConcat() {
return $this->firstname.' '.$this->middlename. ' ' . $this->lastname;
}
现在在$formMapper
对象中定义'property' => 'titleConcat'
$formMapper->add('collaborator', 'entity', array
(
'label' => 'acme.admin.person',
'empty_value' => '',
'class' => 'AcmeCoreBundle:Person',
'query_builder' => function ($repository) {
return $repository
->createQueryBuilder('p')
->where('p.status = 1')
->orderBy('p.lastname', 'ASC');
},
'property' => 'titleConcat'
)
);