【问题标题】:How to add virtual column made of two existing to symfony 2 class如何将由两个现有的虚拟列添加到 symfony 2 类
【发布时间】:2014-07-16 12:24:52
【问题描述】:

我有一个类 User 映射到数据库表并有两个变量/列:名称和姓氏:

/**
 * @ORM\Column(type="string", length=255)
 * @Assert\NotBlank()
 * @Assert\Length(max = 255)
 */
private $name;

/**
 * @ORM\Column(type="string", length=255)
 * @Assert\NotBlank()
 * @Assert\Length(max = 255)
 */
private $surname;

我想添加 nameSurname,它将从上面两个连接。

我需要它,因为可以对整个名称进行排序和搜索,并且我正在使用 KNPPaginator 捆绑包在输出上创建可排序表。结果应该是包含姓名和姓氏的可排序和可搜索的列。

如果可能,解决方案最好作为注释。

感谢您的帮助。

【问题讨论】:

    标签: symfony doctrine-orm knppaginator


    【解决方案1】:

    添加您的专栏:

    /**
     * @ORM\Column(type="string", length=255)
     * @Assert\NotBlank()
     * @Assert\Length(max = 255)
     */
    
    private $nameSurname;
    

    添加生命周期回调:

    /**
     * @ORM\PrePersist
     */
    public function setNameSurname()
    {
        $this->nameSurname = $this->name . $this->surname;
    }
    

    不要忘记在类注释中插入以下行:

    @ORM\HasLifecycleCallbacks()
    

    所有这些你都可以在documentation阅读

    【讨论】:

    • 但这会创建真正的专栏,对吧?我想要一个虚拟的,只是为了阅读 KNPPaginator,因为我不能通过手动教义调用给他。
    • “虚拟列”是什么意思?应该如何存储?
    • 那么 nameSurname 变量就像 CONCAT(name, ' ', surname)。我不想仅仅为此而有另一个真正的专栏。我想要这个的原因是能够在 KNPPaginator 表中对整个名称进行排序和搜索。
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2019-04-15
    • 2013-02-13
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    相关资源
    最近更新 更多