関連する 2 つのモデルFooとBarがあり、ここでBar $belongsTo
Fooです。ここで、すべてのFooにBarが必要です。つまり、両方を同時に作成する必要があります。CakePHP のモデリング システムを使用して、 Fooが作成されるたびにBarが自動的に作成される方法はありますか(おそらく a を介して)、または代わりにその機能を に書き込む必要がありますか?saveAll()
Foo::afterSave()
助けてくれてありがとう。
うん - Foo と Bar の両方のデータをビルドしてからsaveAll()
.
Daveの回答に追加します。
データベース テーブルがトランザクションをサポートしている場合、通常InnoDB storage engine
は MySql で。両方のレコードを一度に保存するよう Cake に指示することもできます。1 つが失敗すると、もう 1 つが元に戻されます。array('atomic' => true)
2番目のパラメーターとして渡す必要がありますsaveAll()
$this->ModelName->saveAll($this->request->data, array("atomic" => true));
クックブックから
atomic: If true (default), will attempt to save all records in a single transaction.
Should be set to false if database/table does not support transactions.