1

我将 Doctrine ORM 与 Symfony 一起使用,我的实体之一是 Setting 对象。在内部,值键可以是字符串或数组,并带有生命周期回调以进行相应调整。我遇到了一个问题,JMS 序列化器会因为值键(数组)与列类型(文本)不匹配而感到困惑。有没有办法让这两者共存?如果内容不是数组,我可以告诉 Doctrine 回退到文本吗?它不使用 Doctrine,但 WordPress 在选项表中处理了这类事情。

编辑 这是到目前为止的一些代码。当保存在对象中时它可以正常工作,但当 JMS 序列化器必须为 API 请求序列化它时会失败。

列定义

/**
* @ORM\Column(type="text", nullable=true)
* @Expose
*/
protected $value;

根据需要取消/序列化列的自定义处理程序

 /**
 * @ORM\PrePersist
 * @ORM\PreUpdate
 * Serialize, if necessary
 */
 public function serializeSetting() {
    if (is_array($this->getValue())) {
        $this->setValue(serialize($this->getValue()));
    }
 }

 /**
 * @ORM\postLoad
 * Unserialize, if necessary
 */
 public function unserializeSetting() {
     $unserialized = @unserialize($this->getValue());
     if ($unserialized !== false)
        $this->setValue($unserialized);
 }
4

0 回答 0