1

2 つのモデル間に多対多の関係があり、クックブックで説明されているように、hasMany スルー メソッドInvoiceで定義されています。Position

請求書を作成するときに、1 回の操作で複数のポジションをその請求書に保存したいと考えていますsave()。このようなもの:

$data = array(
  'Invoice' => array(
    // invoice stuff 
  ),
  'InvoicesPosition' => array(
    [0] => array(
      // additional meta information
      'Position' => array(
        // position stuff
        // ...
      ),
    ),
    [1] => array(
      // ...
      'Position' => array(
        // position stuff
        // ...
      ),
    ),
    // and so on
  ),
);  

$this->Invoice->saveAll($data, array('deep' => true));

結果は、2 つの位置がリンクされた 1 つの新しい請求書になります (つまり、請求書テーブルに 1 つの新しいレコード、位置テーブルに 2 つの新しいレコード、結合テーブルに 2 つの新しいレコード)。

Cakeの組み込みメソッドで可能ですか? saveAll()または、そのモデルのメソッドを上書きする必要がありますか?

4

1 に答える 1

1

'deep' => truesaveAll()メソッドのオプションを使用します。

$this->Invoice->saveAll($data, array('deep' => true));
于 2012-08-23T11:48:49.177 に答える