0

次のコードがあります。

    /**
 * Callback transform array of checkboxes to string and store it in database
 *
 * @ORM\PrePersist()
 * @ORM\PreUpdate()
 */
public function onPreUpdate()
{
    if($this->id == 13)
    {
        $data = implode('-', $this->value);
        $this->setValue($data);
    }
}

/**
 * Callback retrieved data from database transform to string to fill our field
 *
 * @ORM\PostLoad()
 */
public function onPostLoad()
{
    if($this->id == 13)
    {
        $data = (strstr($this->value, '-') !== false) ? explode('-', $this->value) : array($this->value);
        $this->setValue($data);
    }
}

データを追加/更新するときにチェックボックスの配列を文字列に変換し、データベースからデータを取得してチェックボックスウィジェットに配置するときにその逆を行う必要があります。しかし、今はIDによる静的です。入力タイプを確認する必要があり、チェックボックスの場合は上記のコードを実行します...できません:

$this->getDoctrine()->getRepository();

私のエンティティクラスでは、それは機能せず、データマッパーにはお勧めできません...どうすればそれを行うことができますか?

すべての返信に感謝し、私の下手な英語で申し訳ありません

4

1 に答える 1

0

データベースの前または後に永続化しながらデータを変換したい場合、それはプログラミングの良い方法ではありません。symfony2 doctrine Data Transformerを使用できます

于 2012-07-06T11:57:42.933 に答える