【发布时间】:2015-10-27 13:53:25
【问题描述】:
我一直在为我的一个 Symfony2/Doctrine 对象上的一个属性而苦苦挣扎,该对象没有保存在数据库中。它是一个对象数组,包含标签、键和值等属性,但即使它被定义为一个简单的数组数组,它也不会显示出来。
这里是在通常持久化的对象中定义数组的方式:
/*
* @Accessor(getter="getReceipt",setter="setReceipt")
* @Type("ArrayCollection<MyProject\ReceiptProperty>")
* @Expose
* @Groups({"details"})
*/
protected $receipt;
public function setReceipt($receipt) {
$this->receipt = $receipt;
}
public function getReceipt() {
return $this->receipt;
}
这是数组中对象的定义方式
/**
* @ExclusionPolicy("all")
*/
class ReceiptProperty extends APIObject {
/**
* @Type("string")
* @Expose
* @Groups({"basic"})
*/
public $label;
/**
* @Type("string")
* @Expose
* @Groups({"basic"})
*/
public $type;
/**
* @Type("string")
* @Expose
* @Groups({"basic"})
*/
public $key;
/**
* @Expose
* @Groups({"basic"})
*/
public $value;
public function __construct($data) {
$this->label = $data['label'];
$this->type = $data['type'];
$this->key = $data['key'];
$this->value = $data['value'];
}
}
通过在使用 print_r 进行序列化之前直接打印对象,我可以看到数据在那里,但无论配置是什么,该字段都不会显示。
【问题讨论】:
-
您可能需要使用 @VirtualProperty ,因为它是一个非持久属性。 jmsyst.com/libs/serializer/master/reference/annotations
标签: json symfony jmsserializerbundle