无法使用雄辩的ORM更新mysql行

时间:2013-12-24 20:31:46

标签: php mysql laravel-4 eloquent

我是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“where子句”中的未知列'id'(SQL:update visits set browser = Opera / 9.80(Windows NT 6.1; WOW64)Presto /2.12.388 Version / 12.16,updated_at = 2013-12-24 20:03:59其中id为空)

我的表:

user_id  |  browser  |  ip  |  created_at  |  updated_at

有人可以帮我解决我做错的事吗?

1 个答案:

答案 0 :(得分:0)

您问题的简单解决方案是在表格中创建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;