0

同じエンティティからの他のフィールドの連結をデータベースに挿入する必要がある「xml」テキスト フィールドを持つエンティティを構築しようとしています。次のようになります(注釈なし):

class Category
{

private $id;

private $title;

private $description;

public function getId()
{
    return $this->id;
}

public function setTitle($title)
{
    $this->title = $title;

    return $this;
}

public function getTitle()
{
    return $this->title;
}

public function setDescription($description)
{
    $this->description = $description;

    return $this;
}

public function getDescription()
{
    return $this->description;
}

public function setXml($xml)
{
    $xml = $this->id;
    $xml += $this->title;
    $xml += $this->description;
    return $xml;
}

public function getXml()
{
    return $this->xml;
}

次のような単純なフォームを使用して、これらの値を挿入しようとします。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title')
        ->add('description')
        ->add('xml', 'hidden')
    ;
}

フォームを送信しようとすると、xml 値が null であるというエラーが表示されます。 「パラム ["Title 1", "Desc 1", null] を指定して 'INSERT INTO Category (title, description, xml) VALUES (?, ?, ?, ?)' を実行中に例外が発生しました:"

私は何を間違っていますか?

4

1 に答える 1

0

XML フィールドをフォームに追加しないでください。空または null 値に設定されます。

できることは、タイトルまたは説明フィールドを変更するときに XML フィールドを変更することです。XML フィールドの値を手動で設定することはありません。次に、setXML メソッドの代わりに、setTitle および setDescription メソッドで最後に呼び出される updateXML メソッドを使用できます。

エンティティをデータベースに保存する前にアクションを実行できる Doctrine ライフサイクル メソッドも参照できますが、これはもう少し複雑です。

これが役立つことを願っています。

于 2013-11-02T13:53:19.587 に答える