我是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
setbrowser
= 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
有人可以帮我解决我做错的事吗?
答案 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;