2012-08-23 79 views
1

我有两个模型InvoicePosition之间的多对多关系,使用如Cookbook中所述的hasMany through方法定义。一次保存多个hasMany

现在,当我创建发票时,我想在一个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()-方法?

+0

其有点奇怪修复问题的错误代码,现在看起来这是摆在首位正确的,尤为明显保留原来的问题,以及经批准的答案将显示其他用户用同样的问题如何变更 – Ceeram

+0

下次会记住这一点。抱歉。 – nahri

回答

1

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

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

不是,这并不能解决我的问题。 – nahri

+0

现在查看编辑的代码。谢谢。 –

+0

很好,谢谢。我不得不编辑我的'数据'数组。看到我上面的代码。 – nahri