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')
ありがとう