Laravel 手动更新时间戳

Mat*_*rce 1 laravel

我有一个杂项数据库表,每次用户访问另一个用户的个人资料时都会更新该表。不过,我在创建手动时间戳列时遇到了问题。由于我没有为此创建模型,因此我是手动进行的,这应该不是问题,因为该数据库不接受任何用户生成的输入。

移民:

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)

pet*_*erm 5

请帮助我理解,这个被调用的整数是什么。

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)