我正在尝试在Laravel上进行链式Eloquent查询,并使用条件带来用户表中的用户,即,如果它们属于确定的房子.我正在努力寻找让它发挥作用的方法.有人能帮我吗?
这是我的控制器方法:
public function create(){
if(Auth::user()->role->id == 1){
$house = House::findOrFail(Auth::user()->house->id);
$jobs = Job::pluck('name', 'id')->all();
$categories = Category::pluck('name', 'id')->all();
$users = User::pluck('name', 'id')->where('house_id', $house)->get();
return view('admin.tasks.create', compact('jobs', 'categories', 'users'));
}else{
return redirect('home');
}
}
使用get()时抛出的错误是:
Type error: Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in /Applications/MAMP/htdocs/Housing_around/app/Http/Controllers/AdminTasksController.PHP on line 55 and at least 1 expected
并且正如所想的那样,最后的all()并没有在返回的数组中带来任何东西
有人知道如何继续吗?
谢谢!
解决方法:
我给你的建议是使用策略来确定当前经过身份验证的用户的角色.
如果您认为控制器中的此方法具有处理权限,则从数据库中获取数据并将其传递给视图.
当控制器角色时它只是模型(数据结构)和表示(视图)之间的桥梁
然后pluck()方法是一个方法,它在引擎盖下调用get(),所以你不能同时调用它们.对于all()和get()相同,all都在后台调用get方法.
那就像$users = User :: where(‘house_id’,$house) – > pluck(‘name’,’id’);