我正在使用Propel很长一段时间,现在我想尝试Doctrine。
在我的Propel时代,我使用PropelObjectCollection::toArray
(对于集合)或PropelObject::toArray()
使用单个记录将PropelObject
via数组转换为json。
在我的公司中,我们覆盖toArray方法,将虚拟列存储在数组中,然后存储json字符串。 例如:
public function toArray() {
$arr = parent::toArray();
$arr['full_name'] = $this->getFullName(); // full_name isnt part of the table, it's just a getter
return $arr;
}
当我把它变成json时,我在我的json中有我的full_name属性,然后在我的Extjs存储对象中(我们使用extjs)。
现在我想尝试教义,但学说似乎不允许这样做。
我可以覆盖我的学说类中的函数或属性,或者我可以通过注释来执行此操作,如果我的Doctrine类只具有属性$ first_name,$ last_name和no $,是否可以生成带有properties ('first_name', 'last_name', 'full_name')
的json全名
或者有解决方法吗?
感谢您的帮助
编辑: 如果您使用Annotations,我在JMSSerializerBundle中找到了一些东西:
use JMS\Serializer\Annotation\VirtualProperty;
在我的Doctrine实体文件的顶部和一个示例方法
/**
*
* @VirtualProperty
* @return string
*/
public function getFullName() {
return $this->getName(). " mylastname";
}
我的json然后包含虚拟属性full_name