一次保存多个hasMany

时间:2012-08-23 10:04:22

标签: cakephp many-to-many has-many-through

我使用Cookbook中描述的hasMany through方法定义的两个模型InvoicePosition之间存在多对多关系。

现在,当我创建一个发票时,我想在一个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个新记录,位置表中有2个新记录,连接表中有2个新记录)。

Cake的内置方法有可能吗?或者我是否必须覆盖该模型的saveAll() - 方法?

1 个答案:

答案 0 :(得分:1)

在saveAll()方法中使用'deep' => true选项。

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