2016-03-28 69 views
2

我在Laravel 5中遇到问题。当我更新数据库中的记录时,出现错误Unknown column 'id' in 'where clause'。在控制器中,我使用WHERE子句获取要更新的记录。我的主键不是id,类型是bigInteger。我已经尝试在模型中添加protected $primaryKey,但它不适用于bigInteger。有没有办法使用我自己的主键而不是使用ID?Laravel 5更新时无ID

控制器

$item = Item::where('item_id','=',$item_id)->first(); 
$item.name = $name; 
$item.type = $type; 
$item.save(); 
+0

显示控制器。 – user2094178

+0

我已添加控制器 – OrgGila

+0

尝试'Item :: find($ item_id)'。另外,你在php中使用ruby语法,在你的代码的其余部分应该是'$ item->'而不是'$ item.'。 – user2094178

回答

1

请该行添加到您的Item.php模型

class Item extends Model {


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

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

因为您使用自定义的ID名称,laravel不会知道什么是你的主键,但不指定它

0

试试这个$item = Item::where('item_id', $item_id)->first();如果仍然不工作还添加protected $primaryKey = "item_id";到模型

2

Laravel的ORM $primaryKey默认是'id'

当ORM更新,它使用像SQL:

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

所以,当你类扩展ORM。您应该重新定义protect $primaryKey = '<your_table_primary_key>';