我有一个表,其中包含三个字段中的人名:"lastname", "firstname", " midlename "。我需要通过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'
)
);
当然,现在它只返回"姓氏"。如何修改它,以获得我需要的结果?
一种方法是在你的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'
)
);