0

ケーキ2.0.6を使用していて、フォームから出力されたデータが以下の製品である複数のレコードを保存しようとしています。

2つのレコードを保存することができません。フォームのフィールドは、次のように設定されています。0が保存する最初のレコードです。何らかの理由で2つのレコードを保存しません。製品モデルのすべての検証をオフにしましたが、保存前の方法はありません

何かアイデアは何が悪いのですか?

<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] => 
                )

        )

)

編集:将来の参照のためのソリューション。このようにsaveメソッドを呼び出します。

$ 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の代わりに$data['Article']を渡していることに注意してください。同じモデルの複数のレコードを保存する場合、レコード配列はモデルキーなしで数値インデックスを作成する必要があります。

于 2012-04-11T09:54:26.050 に答える