0

我在使用 codeigniter 的批量更新功能时遇到问题,我正在为我的产品和类别使用连接表,因为我有多对多的关系。我到处寻找答案,但仍然一无所获,所以我来这里寻求更多高级技术人员的帮助。

我在表“product_category”中有 2 列,其中包含“product_id”和“category_id”,因此我可以将 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 回答