Laravel 订购a";“最后行动”;专栏文章
我已经创建了一个laravel应用程序,其中我们有用户,每个用户在其他表x项上都有“操作”。在我的后端,我向所有用户显示一个数据表:Laravel 订购a";“最后行动”;专栏文章,laravel,datatable,eloquent,Laravel,Datatable,Eloquent,我已经创建了一个laravel应用程序,其中我们有用户,每个用户在其他表x项上都有“操作”。在我的后端,我向所有用户显示一个数据表: $users = User::all(); 我添加了一列“last action”,显示用户在“operation”表中添加的最后一条记录: ->addColumn('last_action',函数($user){ $lastaction=Operations::where('user',$user->id)->orderBy('last_action','de
$users = User::all();
我添加了一列“last action”,显示用户在“operation”表中添加的最后一条记录:
->addColumn('last_action',函数($user){
$lastaction=Operations::where('user',$user->id)->orderBy('last_action','desc')->first();
if(为null($lastaction)){
返回“无”;
}否则{
$carbonated_date=Carbon::parse($lastaction->last_action);
返回“.$carbonated_date->diffForHumans()”;
}
})
问题是,如果我尝试订购“最后一个操作”列,我的订购顺序错误,如下所示:
- 说出最后的行动
- 鲍勃什么都没有
- 马克2天前
- 什么都没有收到
- 亚历克斯什么都没有
- 汤姆三天前
这里出了什么问题?最好且正确的方法是采取以下几个步骤:
Opration.php
中添加以下方法:/**
*应该变异为日期的属性。
*
*@var数组
*/
受保护的$日期=[
“最后行动”,
];代码>这里有什么问题?我相信您的order by可以正常工作,也许您希望您的用户列表按上次操作排序?您可以通过$users=User::orderBy('last_action','desc')->get()来实现这一点代码>您需要使用特定的日期时间格式,以便允许DataTable对数据进行排序。通常,它是JavaScript(YYYY,MM,DD)本机支持的格式。最后一个操作在另一个存储为datetime的表上。我从另一个存储用户操作的表中执行最后一个操作。嗯,好的,我现在就试试您的解决方案。用户模型必须具有多个关系?是的。有许多&属于
->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>';
}
})