我有一个杂项数据库表,每次用户访问另一个用户的个人资料时都会更新该表。不过,我在创建手动时间戳列时遇到了问题。由于我没有为此创建模型,因此我是手动进行的,这应该不是问题,因为该数据库不接受任何用户生成的输入。
移民:
public function up()
{
Schema::create('recently_visited', function (Blueprint $table) {
$table->increments('id');
$table->integer('visitor_id');
$table->integer('profile_id');
$table->integer('times_visited');
$table->timestamp('last_visit');
});
}
Run Code Online (Sandbox Code Playgroud)
控制器:
$visits = DB::table('recently_visited')
->where('profile_id',$user->id)
->where('visitor_id',Auth::user()->id)
->increment('times_visited')
->update(array('last_visit' => Carbon::now()));
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。请帮助我理解,这个被调用的整数是什么。谢谢!
致命错误:在整数上调用成员函数 update()
回答:
我只需要在查询构建器的 increment() 中包含我的所有更新。
$visits = DB::table('recently_visited')
->where('profile_id',$user->id)
->where('visitor_id',Auth::user()->id)
->increment('times_visited', 1, ['last_visit' => Carbon::now()]);
Run Code Online (Sandbox Code Playgroud)
请帮助我理解,这个被调用的整数是什么。
increment() 方法不返回查询构建器实例,而是更新记录本身并返回一个整数。
你应该能够做到这一点:
$visits = DB::table('recently_visited')
->where('profile_id',$user->id)
->where('visitor_id',Auth::user()->id)
->increment('times_visited', 1, array('last_visit' => Carbon::now()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9279 次 |
| 最近记录: |