这是我的代码片段,使用事件记录来更新 item_stock 值。 我需要从项目表中获取 item.SKU 作为查询的选择器。
$this->db->join('item','item.item_id = items.item_id')
->join('items','items.stock_id = item_stock.stock_id')
->set('item_stock.stock_quantity','item_stock.stock_quantity + $new_qty',FALSE)
->where('item_stock.colour',$color)
->where('item_stock.size',$size)
->where('item.SKU',$SKU)
->update('item_stock');
$query = $this->db->update('item_stock');
由于某种原因,它丢失了它的JOIN堆栈。
Error Number: 1054
Unknown column 'item.SKU' in 'where clause'
UPDATE `item_stock` SET `item_stock`.`stock_quantity` = item_stock.stock_quantity + $new_qty WHERE `item_stock`.`colour` = 'Kuning' AND `item_stock`.`size` = 'XL' AND `item`.`SKU` = 'Wooser-01'
Filename: E:\xampp\htdocs\nekogear\system\database\DB_driver.php
Line Number: 330
有什么建议可以解决这个问题吗?谢谢之前。
<小时/>*ps = 我尝试过 $this->db->query("query code here") 并且它工作正常,但我想使用用于一致性的事件记录样式。
最佳答案
你可以说我很蠢,但是嘿,这很管用! 我的“解决方案”是将 JOIN 包含在 $this->db->update()
中$this->db->set('item_stock.stock_quantity','item_stock.stock_quantity + $new_qty',FALSE)
->where('item_stock.colour',$color)
->where('item_stock.size',$size)
->where('item.SKU',$SKU);
$query = $this->db->update('item_stock JOIN items ON items.stock_id = item_stock.stock_id JOIN item ON item.item_id = items.item_id');
它等于以下查询
UPDATE `item_stock`
JOIN items ON items.stock_id = item_stock.stock_id
JOIN item ON item.item_id = items.item_id
SET `item_stock`.`stock_quantity` = item_stock.stock_quantity + $new_qty
WHERE `item_stock`.`colour` = 'Kuning'
AND `item_stock`.`size` = 'XL'
AND `item`.`SKU` = 'Wooser-01'
希望对您也有帮助!
关于php - 使用 join codeigniter 事件记录更新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652231/