0

我正在使用 cake 2.0.6 并尝试保存多个记录,这些记录是我从表单输出的数据的产品,如下所示;

我无法保存两条记录,我的表单中的字段设置为;0 是它应该保存的第一条记录。由于某种原因,它不会保存 2 条记录。我已经关闭了产品模型的所有验证并且没有 beforesave 方法

有什么想法有什么问题吗?

<input name="data[Product][0][product_code]"/>
<input name="data[Product][0][colour]"/>
<input name="data[Product][0][lead_time_weeks]"/>
<input name="data[Product][0][description]"/>
<input name="data[Product][0][height]" />
<input name="data[Product][0][width]" />
<input name="data[Product][0][depth]" />
<input name="data[Product][0][price]" />
<input name="data[Product][0][discount]" />
<input name="data[Product][0][discounted_price]" />
<input name="data[Product][0][quantity]"/>


<input name="data[Product][1][product_code]"/>
<input name="data[Product][1][colour]"/>
<input name="data[Product][1][lead_time_weeks]"/>
<input name="data[Product][1][description]"/>
<input name="data[Product][1][height]" />
<input name="data[Product][1][width]" />
<input name="data[Product][1][depth]" />
<input name="data[Product][1][price]" />
<input name="data[Product][1][discount]" />
<input name="data[Product][1][discounted_price]" />
<input name="data[Product][1][quantity]"/>


Array
(
    [Product] => Array
        (
            [0] => Array
                (
                    [product_code] => fgfgf
                    [colour] => 
                    [lead_time_weeks] => 
                    [description] => 
                    [height] => 11111
                    [width] => 22222
                    [depth] => 
                    [price] => 
                    [discount] => 50
                    [discounted_price] => 
                    [quantity] => 
                )

            [1] => Array
                (
                    [product_code] => fgfgf
                    [colour] => 
                    [lead_time_weeks] => 
                    [description] => 
                    [height] => 123
                    [width] => 123
                    [depth] => 
                    [price] => 
                    [discount] => 50
                    [discounted_price] => 
                    [quantity] => 
                )

        )

)

编辑:供将来参考的解决方案;像这样调用保存方法;

$this->Product->saveAll($this->request->data['Product']

4

1 回答 1

5

你怎么叫saveAll?常见的错误是将其称为

$this->Product->saveAll($data);

当你应该这样做的时候

$this->Product->saveAll($data['Product']);

它必须在没有模型键的情况下进行数字索引

根据文档: https ://book.cakephp.org/2.0/en/models/saving-your-data.html

请注意,我们传递的是 $data['Article'] 而不是通常的 $data。当保存同一模型的多条记录时,记录数组应该只是在没有模型键的情况下进行数字索引。

于 2012-04-11T09:54:26.050 回答