0

2 つの問題があり、助けが必要です。

2 番目のテーブルへの外部キーによって参照されるテーブルがあります。

member_child:
    _attributes: { phpName: MemberChild }
    id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true }
    member_id: { type: INTEGER, size: '11', required: true, foreignTable: member, foreignReference: id }
    child_id: { type: INTEGER, size: '11', required: true, foreignTable: child, foreignReference: id }

と子:

child:
    _attributes: { phpName: Child }
    id: { type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true, onDelete: cascade }
    username: { type: VARCHAR, size: '45', required: true, defaultValue: '' }
    display: { type: TINYINT, size: '1', required: true, defaultValue: '1' }
    ...etc

(明らかにこれは推進力です)

ここで、フォームを使用して子オブジェクトを作成する場合、次の 2 つのことを行う必要があります。

  1. 送信時にメンバーIDを送信
  2. doSave 関数をオーバーライドして、子が作成されたときに member_child オブジェクトも作成できるようにします

これらの問題をどのように達成できますか?

4

2 に答える 2

1

pankar が言ったように、embedForm を使用できます。また、次のようにフォームの save メソッドをオーバーライドすることもできます。

$this->childForm = new ChildForm();
$this->childMemberForm = new ChildMemberForm();

//binding, checking if form was sent etc.

if ($this->childForm->isValid() && $this->childMemberForm->isValid())
{
  //save method should return saved object
  $childObject = $this->childForm->save(); 
  //therefore this id could be used by next object
  $this->childMemberForm->save(childObject->getId()); 
}

それがあなたを助けることを願っています!

于 2012-09-26T17:39:40.477 に答える
0

子フォームを保存するために、親フォームで組み込みの Symfony 機能をいつでも使用できますがsfForm::embedForm、これを適切に機能させる方法がわかりません。

少し前に出くわしたある投稿は、実際に解決策を提供してくれました。ご覧になり、ニーズに合っているかどうかを確認してくださいもちろん Doctrine にもありますが、Propel に簡単に移植できると思います。

于 2012-09-24T19:19:05.973 に答える