Laravel 5更新没有id

时间:2016-03-28 20:17:07

标签: php laravel laravel-5

我在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();

3 个答案:

答案 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}}添加到您的模型