2016-03-28 94 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>';