有没有一种方法可以将汇总/计算字段(concat)添加到Doctrine实体?

时间:2019-07-15 21:56:38

标签: doctrine-orm doctrine

我有一个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()时,我的代码崩溃了

1 个答案:

答案 0 :(得分:0)

也许那是错误的做法,确实做到了“神奇”。如果仅在视图中需要该全名字段,则可以按原样使用getter。万一您需要它持久存在,则应在其设置器中隐藏名字和姓氏字符串,并设置fullname属性。在这种情况下,您的getter应该返回该属性。