我正在开发一个REST api,我有一个类型为object的列作为我的User类的属性。在我的用户实体中,我有:
/**
* @var stdClass
* @Serializer\Expose
* @Serializer\Groups({"list", "details"})
* @ORM\Column(type="object", name="notifications")
*/
protected $notifications;
创建新用户时,我会使用不同通知的默认值初始化此字段,如下所示:
$_notifications = new \stdClass();
$_notifications->voucherSold = true;
$_notifications->voucherRedeemed = true;
$_notifications->newConnection = true;
$user->setNotifications($_notifications);
我可以看到此字段正在正确写入数据库。在我的数据库中,在notifications
列下,我得到:
O:8:"stdClass":3:{s:11:"voucherSold";b:1;s:15:"voucherRedeemed";b:1;s:13:"newConnection";b:1;}
但是当我通过API加载此用户时,我最终在通知字段中输入了一个空对象:
{
"resource": "vendors/39",
"id": 39,
"email": "test@user.com",
"notifications": {},
"company": "",
"address": "",
"city": "",
"state": "",
"zipcode": "",
"phone": "",
"website": ""
}
我无法弄清楚为什么价值没有通过。有任何想法吗?感谢。
答案 0 :(得分:1)
json编码器可能只将数组转换为json,并且只是将对象设置为对象{}
,而不是查看字段等等。
尝试将$_notifications
对象转换为数组,然后再返回它:
$user->setNotifications((array) $_notifications);