1

私は Symfony で Doctrine ORM を使用しており、私のエンティティの 1 つは Setting オブジェクトです。内部では、値キーは文字列または配列のいずれかであり、それに応じてライフサイクル コールバックが調整されます。値のキー (配列) が列の型 (テキスト) と一致しないため、JMS シリアライザーが混乱するという問題が発生しました。この2つが共存する方法はありますか?コンテンツが配列でない場合、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