saveAll()在嵌套数据上

时间:2012-02-01 15:02:41

标签: cakephp nested associations cakephp-2.0

当我尝试使用$ data数组创建Template的新条目时,模板,组和产品的模型会正确保存。但是不保存嵌套的Calcfield(它是hasMany of Group)。 :(组和产品有很多模板。

这有可能吗?

$this->Template->create();
$this->Template->saveAll($data, array('validate' => false));

// $data looks like this:

Array
(
    [Template] => Array
        (
            [title] => 
            [shorttitle] => Wie auch immer
            [place] => Hannover
            [size] => 
        )

    [Group] => Array
        (
            [0] => Array
                (
                    [title] => Hosting
                    [order] => 
                    [Calcfield] => Array
                        (
                            [0] => Array
                                (
                                    [title] => Hosting
                                    [value] => 0
                                    [description] => 
                                )
                            [1] => Array
                                (
                                    [title] => Strom
                                    [value] => 0
                                    [description] => 
                                )
                        )
                )
        )

    [Product] => Array
        (
            [0] => Array
                (
                    [share] => 10
                    [businessunit] => Marketing
                )
            [1] => Array
                (
                    [share] => 30
                    [businessunit] => intl. CRM
                )
        )
)

2 个答案:

答案 0 :(得分:2)

不,据我所知,递归保存是不可能的。你需要将它们放在一个单独的数组中,然后在初始保存后保存它们。

答案 1 :(得分:1)

从CakePHP 2.1开始,可以使用deep中的saveAll参数保存深层嵌套模型(自CakePHP 2.1起)

REF。 http://book.cakephp.org/2.0/en/models/saving-your-data.html?highlight=saveall#model-saveassociated