我试图找到一种方法,只显示属于用户公司的选择菜单中的选项。
我在用户,user_profile,公司和部门之间建立了关系。
现在在我的user_profile编辑中,我希望能够从部门列表中选择一个部门。 但该列表应仅包含属于用户公司的部门。
这是我的UserProfilesController的编辑功能
public function edit($username)
{
$user = User::with('user_profile.company', 'user_profile.location', 'user_profile.department', 'user_profile.title')->whereUsername($username)->firstOrFail();
$companies = Company::lists('name', 'id'); //get companies for drop menu
$locations = Location::lists('name', 'id'); //get locations for drop menu
$departments = Department::lists('name', 'id'); //get departments for drop menu
$titles = Title::lists('name', 'id'); //get titles for drop menu
//dd($user->toArray());
return View::make('user_profiles.edit', compact('user', 'companies', 'locations', 'departments', 'titles'));
}
如何在$ departments变量上查询?有Laravel方式吗?现在我得到了所有的部门。我只想获得属于用户公司的部门。
谢谢!
答案 0 :(得分:0)
假设您有Company hasMany Department
关系设置:
$departments = $user->user_profile->company->departments->lists('name', 'id');
另外,我建议将你的关系重命名为camelCase,因为这是Eloquent将它们作为动态属性读取的方式。
话虽如此,除非您明确加载(with
或load
)关系,否则您无法执行此操作:
$user = User::first();
$user->user_profile; // null
// but if relation was userProfile, then you can do either:
$user->userProfile;
$user->user_profile; // this could be called as a dynamic property, but stick to 1 convention