[英]Can't update mysql rows using eloquent ORM
我是Laravel和Eloquent ORM的新手。 我嘗試更新行(如果存在),但總是收到錯誤。 這是代碼:
public static function UpdateVisit(){
$ThisVisit = Visit::where('user_id', '=', Auth::user()->id)->first(); // is this first visit?
echo $ThisVisit;
if (!$ThisVisit){
$ThisVisit = New Visit;
}
$ThisVisit->user_id = Auth::user()->id;
$ThisVisit->ip = Request::getClientIp();
$ThisVisit->browser = $_SERVER['HTTP_USER_AGENT'];
$ThisVisit->save();
}
當記錄是新記錄時,它會很好地工作。 但是,當我嘗試更新時,出現以下錯誤:
列未找到:SQLSTATE [42S22] 1054未知列'ID'在'where子句'(SQL:更新
visits
設置browser
=歌劇/ 9.80(Windows NT的6.1; WOW64)的Presto / 2.12.388版本/ 12.16,updated_at
= 2013 -12-24 20:03:59其中id
為null)
我的桌子:
user_id | browser | ip | created_at | updated_at
有人可以幫我做錯什么嗎?
您的問題的簡單解決方案是在表中創建id
字段。 Laravel,默認情況下會將id
字段視為primary key
。
id | user_id | browser | ip | created_at | updated_at
要么
不建議這樣做,因為我認為您的user_id
在表格中不是唯一的,並且用戶可以使用包括移動設備在內的各種瀏覽器來瀏覽網站。
使用user_id
作為主鍵。
在您的Visit
模型中:
protected $primaryKey = "user_id";
//will prevent auto increment your user_id
protected $incrementing = false;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.