Laravel 5更新没有id


Laravel 5 update without id

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

请将此行添加到您的Item.php型号中

class Item extends Model {


//仅添加此行
protected $primaryKey = 'item_id';

//..... the rest of your model

由于您使用自定义的id名称,如果不指定它,laravel将不知道什么是您的主键

Laravel的orm $primaryKey默认为'id'

当orm更新时,它使用类似于sql的:

... where {$this->primaryKey} = {$this->{$this->primaryKey}}

因此,当您对orm进行类扩展时。

您应该重新定义protected $primaryKey = '<your_table_primary_key>';

试试这个$item = Item::where('item_id', $item_id)->first();如果仍然不起作用,还可以将protected $primaryKey = "item_id";添加到您的模型中