我有一个用户实体,它计算两个字段:名字和姓氏。
我想知道如何向我的实体添加一个名为全名(名字 + ' ' + 大写(姓氏((的虚拟列。
我已经阅读了有关聚合字段的 Doctrine 文档,但我不确定如何在我的上下文中使用它。
我不想向将在用户上启动的每个 DQL 添加 concat 和上层公式,但我想在我的实体中添加一次计算字段。做一个PHPgetter不是一个解决方案。
/**
* User
*
* @ORMTable(name="[user]")
* @ORMEntity(repositoryClass="UserRepository")
*/
class User
{
/**
* @var string|null
*
* @ORMColumn(name="lastname", type="string")
*/
private $lastname;
/**
* @var string|null
*
* @ORMColumn(name="firstname", type="string")
*/
private $firstname;
}
如果我将这样的聚合字段添加到我的实体:
/**
* @ORMColumn(type="string")
*/
private $fullName='';
public getFullName(){
return $this->firstname . ' ' . $this->lastname;
}
当我在用户实体上调用 find(( 或 findAll(( 时我的代码崩溃(列名无效(
错误的方法,做那个"魔术"。如果您只需要视图的全名字段,则可以按原样使用 getter。如果需要持久保存它,则应在其 setter 中连接名字和姓氏字符串并设置 fullname 属性。在这种情况下,您的 getter 应返回该属性。