我正在尝试在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()
并没有给我带来返回数组中的任何内容
有人知道如何继续吗?
谢谢!
答案 0 :(得分:3)
使用正确的语法来避免错误:
$jobs = Job::pluck('name', 'id');
$categories = Category::pluck('name', 'id');
$users = User::where('house_id', $house)->pluck('name', 'id');
答案 1 :(得分:2)
您无法在pluck()
之后使用get()
$jobs = Job::pluck('name', 'id');
$categories = Category::pluck('name', 'id');
$users = User::where('house_id', $house)->pluck('name', 'id');
答案 2 :(得分:2)
我建议您使用策略来确定当前经过身份验证的用户的角色。 如果您认为控制器中的此方法具有处理权限,则从数据库中获取数据并将其传递给视图。
当控制器角色时它只是模型(数据结构)和表示(视图)之间的桥梁
然后pluck()
方法是一种方法,它会调用get()
,因此你无法同时调用它们。 all()
vs get()
的相同内容都是在幕后调用方法。
所以喜欢$users = User::where('house_id', $house)->pluck('name', 'id');