代码之家  ›  专栏  ›  技术社区  ›  rookian

一次保存多个hasMany

  •  1
  • rookian  · 技术社区  · 14 年前

    我有两个模型之间的多对多关系 Invoice Position 使用hasMany-through方法定义,如中所述 Cookbook

    现在,当我创建发票时,我想将多个仓位保存到一个发票中 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条新记录和联接表中有两条新记录)。

    Cake的内置方法有可能吗?或者我必须重写 saveAll() -该模型的方法?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Arun Jain    14 年前

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

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