【问题标题】:Laravel Manual Update TimestampLaravel 手动更新时间戳
【发布时间】:2016-02-12 04:25:44
【问题描述】:

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

迁移:

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

【问题讨论】:

  • Carbon::now() 不是时间戳实例。所以,试试->update(array('last_visit' => Carbon::now()->timestamp));,如果你有任何其他错误,请告诉我。
  • 仍然显示同样的错误。
  • 它与increment() 通话。所以你应该在更新方法中和时间戳更新一起做。
  • 您能否更新问题并为未来的访问者提供正确的查询?
  • 完成!谢谢提醒。

标签: laravel


【解决方案1】:

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

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

【讨论】:

  • 好的,这行得通。我不太了解在查询构建器中使用 increment() 的文档,但现在明白了。非常感激。 ->increment('times_visited', 1, ['last_visit' => Carbon::now()]);
猜你喜欢
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
相关资源
最近更新 更多