Php 条令使用多种列类型——数组和字符串

Php 条令使用多种列类型——数组和字符串,php,symfony,doctrine,Php,Symfony,Doctrine,我将ORM与Symfony一起使用,其中一个实体是设置对象。在内部,值键可以是字符串或数组,生命周期回调会相应地进行调整。我遇到了一个问题,JMS序列化程序由于值键数组与列类型文本不匹配而变得混乱。有没有办法让这两者共存?如果内容不是数组,我能告诉条令退回到文本吗?它不使用条令,但WordPress在选项表中处理这类事情 编辑 下面是到目前为止的一些代码。它在对象中保存时正常工作,但在JMS序列化程序必须为API请求序列化它时失败 列定义 /** * @ORM\Column(type="text

我将ORM与Symfony一起使用,其中一个实体是设置对象。在内部,值键可以是字符串或数组,生命周期回调会相应地进行调整。我遇到了一个问题,JMS序列化程序由于值键数组与列类型文本不匹配而变得混乱。有没有办法让这两者共存?如果内容不是数组,我能告诉条令退回到文本吗?它不使用条令,但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);
 }

如果您发布到目前为止的代码,可能会有所帮助。您的PHPDoc for Serialized设置错误。将/*替换为/**。序列化程序属性上的批注不能具有逻辑,但可以使用具有逻辑的访问器设置/获取序列化程序。