Laravel手动更新时间戳

时间:2016-02-12 04:25:44

标签: 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');
    });
}

控制器:

$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()));

我收到以下错误。请帮助我理解,调用它的整数是多少。谢谢!

致命错误:在整数

上调用成员函数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()]);

1 个答案:

答案 0 :(得分:3)

  

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

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()));