我创建了一个laravel应用程序,其中我们有用户,每个用户都有其他表x条目作为"操作"。在我的后端,我向所有用户显示数据表:
$users = User::all();
我添加了一个列"最后一个动作"显示用户在"操作"上添加的最后一条记录表:
->addColumn('last_action', function ($user) {
$lastaction = Operations::where('user', $user->id)->orderBy('last_action','desc')->first();
if (is_null($lastaction)) {
return '<span class="label label-warning">nothing</span>';
} else {
$carbonated_date = Carbon::parse($lastaction->last_action);
return '<span class="label label-success">'.$carbonated_date->diffForHumans().'</span>';
}
})
问题在于,如果我尝试订购&#34;最后一次行动&#34;第一栏错误的订单如下:
...
这里有什么问题?
答案 0 :(得分:0)
最好和正确的方法是采取以下几个步骤:
Opration.php
中添加以下方法:
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = [
'last_action',
];
/**
* Order users by last action.
*
* @param $query
* @return mixed
*/
public function scopeByLastAction($query)
{
return $query->orderBy('last_action', 'desc');
}
User::operations()->byLastAction()->get();
这是正确的方法,但您需要确保在User
模型中有关系函数。