如何将由两个现有的虚拟列添加到 symfony 2 类
Posted
技术标签:
【中文标题】如何将由两个现有的虚拟列添加到 symfony 2 类【英文标题】:How to add virtual column made of two existing to symfony 2 class 【发布时间】: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 捆绑包在输出上创建可排序表。结果应该是包含姓名和姓氏的可排序和可搜索的列。
如果可能,解决方案最好作为注释。
感谢您的帮助。
【问题讨论】:
【参考方案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 表中对整个名称进行排序和搜索。以上是关于如何将由两个现有的虚拟列添加到 symfony 2 类的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 SQL 数据块时基于现有的增量表将 NULL 列添加到新表?
data.table 连接然后将列添加到现有的 data.frame 而无需重新复制