如何将由两个现有的虚拟列添加到 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 而无需重新复制

将 CheckBox 列添加到现有的 TableView

如何将多维数组添加到现有的 Spark DataFrame

如何将新列添加到现有表 symfony - orocommerce

将自动增量 ID 添加到现有的升序列?