0

codeigniter のバッチ更新機能に問題があります。多対多の関係があるため、製品とカテゴリに結合テーブルを使用しています。私は答えを求めて高低を検索しましたが、まだ何もないので、より多くの上級技術者に助けを求めるためにここに来ました.

「product_id」と「category_id」を含む「product_category」テーブルに2つの列があるため、1つの製品を多くのカテゴリにリンクできます。すべての ID を正常に挿入する挿入クエリを実行できましたが、更新が機能していません。これが私のコードです:

モデル:

function update_product_cat($product, $cat_id) {            
                 $data = array();
                    foreach( $product as $index => $value )
                        {
                    $data[] = array(
                        'product_id'    => $value ,
                        'category_id'  => $cat_id[ $index ]
                        );
                            }

                    $this->db->update_batch('product_category', $data, 
'product_id');


                                }

配列:

Array ( [0] => Array ( [product_id] => 327 [category_id] => 3 ) [1] => Array ( [product_id] => 327 [category_id] => 5 ) [2] => Array ( [product_id] => 327 [category_id] => 7 ))

私のエラーコード:

エラー番号: 1062

キー「PRIMARY」の重複エントリ「327-3 」 UPDATE product_category SET category_id = CASE WHEN product_id = '327' THEN '3' WHEN product_id = '327' THEN '5' WHEN product_id = '327' THEN '7' ELSE category_id END WHERE product_id IN ('327','327','327')

ありがとう

4

1 に答える 1

0

これがあなたの問題全体であると 100% 確信しているわけではありませんが、product_category テーブルには主キーとして product_id が設定されているようです。同じ product_id を多数入力しようとしているようです。その場合は、主キーの削除/交換は言うまでもなく、バッチではなく通常の更新を使用する必要があります。

于 2012-08-23T14:59:05.033 に答える