让 carbon 与用户 table 中 laravel 的 updated_at 列一起工作

Get carbon to work with laravel's updated_at column in users table

我有一个使用 laravel 创建的数据表,这是我用来获取数据的代码

public function getTasks()
    {
      $users = User::select(['id','users_full_names', 'email', 'users_telephone_number', 'users_credits', 'users_last_seen_carbon_object','users_profile_picture','updated_at']);

        return Datatables::of($users)
            ->addColumn('action', function ($user) {
                return '<a href="/edit/'.$user->id.'" class="btn btn-sm btn-primary"><i class="glyphicon glyphicon-edit"></i> Edit</a> <a href="/delete/'.$user->id.'" class="btn btn-sm btn-danger"><i class="glyphicon glyphicon-trash"></i> Delete</a> <a href="/moderate/'.$user->emp_no.'" class="btn btn-sm btn-primary"><i class="glyphicon glyphicon-ban-circle"></i> Moderate</a> <a href="/view/'.$user->emp_no.'" class="btn btn-sm btn-danger"><i class="glyphicon glyphicon-search"></i> View</a> <a href="/impersonate/'.$user->id.'" class="btn btn-sm btn-primary"><i class="glyphicon glyphicon-user"></i> Impersonate</a>';
            })->editColumn('users_last_seen_carbon_object', function(User $user) {
               $datetime = Carbon::createFromDate($user->updated_at);
                    return $datetime->diffForHumans();
                })->make(true);
    }

updated_at 列中包含的示例数据如下所示

2017-05-06 15:16:54

早些时候我试过 return $user->updated_at->diffForHumans() 但 json 已损坏。

此代码

$datetime = Carbon::createFromDate($user->updated_at);
return $datetime->diffForHumans();

对所有行显示 last_seen 1 秒前,即使在一段时间后也不会更新。

我怎样才能确保最后看到的显示正确?

updated_at 字段应该是 Carbon 的一个实例,并且在其上使用方法 diffForHumans 应该可以正常工作。

return $user->updated_at->diffForHumans();

我能知道这会如何破坏您的 json 回复吗?此外,您不需要在此代码中指定模型类型。

function(User $user)

我终于这样工作了

public function getTasks()
    {
      $users = User::select(['id','users_full_names', 'email', 'users_telephone_number', 'users_credits', 'users_last_seen_carbon_object','users_profile_picture','updated_at']);

        return Datatables::of($users)
            ->addColumn('action', function ($user) {
                return '<a href="/edit/'.$user->id.'" class="btn btn-sm btn-primary"><i class="glyphicon glyphicon-edit"></i> Edit</a> <a href="/delete/'.$user->id.'" class="btn btn-sm btn-danger"><i class="glyphicon glyphicon-trash"></i> Delete</a> <a href="/moderate/'.$user->emp_no.'" class="btn btn-sm btn-primary"><i class="glyphicon glyphicon-ban-circle"></i> Moderate</a> <a href="/view/'.$user->emp_no.'" class="btn btn-sm btn-danger"><i class="glyphicon glyphicon-search"></i> View</a> <a href="/impersonate/'.$user->id.'" class="btn btn-sm btn-primary"><i class="glyphicon glyphicon-user"></i> Impersonate</a>';
            })->editColumn('updated_at', function(User $user) {
              $dt = $user->updated_at->toDateTimeString();
              $datetime = Carbon::parse($dt);;
                    return $datetime->diffForHumans();
                })->make(true);
    }

只使用 $user->updated_at 而没有 Carbon::createFromDate($user->updated_at),因为 updated_atdate_format。你不需要 Carbon::createFromDate.

如果你想要$date = $user->updated_at

及之后:

return $date->diffForHumans();