我在Laravel 5中遇到问题。当我更新数据库中的记录时,出现错误Unknown column 'id' in 'where clause'
。在控制器中,我使用WHERE子句来获取我想要更新的记录。我的主键不是id,类型是bigInteger。我尝试在模型中添加protected $primaryKey
,但它对bigInteger不起作用。有没有办法使用我自己的主键而不是使用id?
控制器
$item = Item::where('item_id','=',$item_id)->first();
$item.name = $name;
$item.type = $type;
$item.save();
答案 0 :(得分:3)
Laravel的$primaryKey
默认值为'id'
。
当orm更新时,它使用sql:
... where {$this->primaryKey} = {$this->{$this->primaryKey}}
所以当你的课程扩展了orm。
您应该重新定义protect $primaryKey = '<your_table_primary_key>';
。
答案 1 :(得分:2)
请将此行添加到Item.php模型
class Item extends Model {
//仅添加此行
protected $primaryKey = 'item_id';
//..... the rest of your model
由于您使用自定义ID名称,因此laravel在您未指定的情况下将不知道您的主键是什么
答案 2 :(得分:0)
试试这个$item = Item::where('item_id', $item_id)->first();
如果仍然无效,请将“{1}}添加到您的模型