我有一个USER实体,该实体包含两个字段:名字和姓氏。
我想知道如何在我的实体中添加一个称为全名(firstname +''+ upper(lastname))的虚拟列。
我已经阅读了有关聚合字段的Doctrine文档,但是不确定如何在上下文中使用它。
我不想向将在用户上启动的每个DQL添加concat和上式,但是我想在实体中添加一次计算字段。做PHP吸气剂不是解决方案。
/**
* User
*
* @ORM\Table(name="[user]")
* @ORM\Entity(repositoryClass="UserRepository")
*/
class User
{
/**
* @var string|null
*
* @ORM\Column(name="lastname", type="string")
*/
private $lastname;
/**
* @var string|null
*
* @ORM\Column(name="firstname", type="string")
*/
private $firstname;
}
如果我将这样的聚合字段添加到我的实体中:
/**
* @ORM\Column(type="string")
*/
private $fullName='';
public getFullName(){
return $this->firstname . ' ' . $this->lastname;
}
当我对用户实体(无效的列名)调用find()或findAll()时,我的代码崩溃了
答案 0 :(得分:0)
也许那是错误的做法,确实做到了“神奇”。如果仅在视图中需要该全名字段,则可以按原样使用getter。万一您需要它持久存在,则应在其设置器中隐藏名字和姓氏字符串,并设置fullname属性。在这种情况下,您的getter应该返回该属性。