簡體   English   中英

無法使用雄辯的ORM更新mysql行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM