下面的代码是在Job表中按权限划分列表视图。
public function index(Request $request)
{
$user_name = Auth::user()->name;
$jobs = Job::orderBy('created_at', 'desc') //@default
->where('is_trash', '==', 0)
->paginate(15);
if(!Auth::user()->hasPermissionTo('Admin')){ //check by permission
$jobs = Job::orderBy('created_at', 'desc')
->where('user_name', '=', $user_name)
->where('is_trash', '==', 0)
->orderby('updated_at', 'desc')
->orderBy('deleted_at', 'desc')
->paginate(15);
}
return view('jobs.index')
->with('jobs', $jobs);
}
例如,当前登录用户名为C,并且有A,B,D用户。 然后我希望将列表显示为
------------------------------
C
A
B
D
------------------------------
如何在列表中首先对当前登录的用户进行排序? 提前谢谢你。:)
答案 0 :(得分:0)
要在所有其他行上方放置一行,然后按升序/降序排序其余行,您需要执行以下操作SELECT * FROM table ORDER BY field = value ASC
因此,对于您的查询,这样的事情应该起作用
$user_name = Auth::user()->name;
$jobs = Job::orderByRaw("user_name = ':name' ASC", ['name' => $user_name])
->orderBy('created_at', 'desc')
->where('is_trash', '==', 0)
->paginate(15);
我不完全确定您要订购哪个查询以及哪个字段,但此示例应该足以让您适应。这是未经测试但如果:name
不按照示例工作,请尝试在\DB::raw()
中包装查询以添加绑定$user_name
。
答案 1 :(得分:0)
您可以使用collections。刚刚测试过,效果很好:
list($user, $collection) = $collection->partition(function($user) {
return $user->id === auth()->id();
});
$collection = $user->merge($collection);