我正在开发我的第一个laravel项目:一棵家族树。我有4个家庭分支,每个分支都有人/家庭/图片/故事/等等。网站上的特定用户将可以访问这些家庭分支中1,2或4个的所有内容(我不想向他们不相关的人展示表弟内容)。将动态数量的集合合并在一起
因此,在各种页面上,我希望来自控制器的集合包含基于给定用户权限的内容。合并似乎喜欢正确的方式来做到这一点。
我有范围从家庭的每个分支中获取人员,在下面的示例中,我还为本月生日的人员提供了一个范围。为了显示这个用户的正确的生日,我可以通过合并每个组,如果他们有权访问。
这里是我的功能是什么样子,如果我发现在所有4家分支机构大家:
public function get_birthday_people()
{
$user = \Auth::user();
$jones_birthdays = Person::birthdays()->jones()->get();
$smith_birthdays = Person::birthdays()->smith()->get();
$lee_birthdays = Person::birthdays()->lee()->get();
$brandt_birthdays = Person::birthdays()->brandt()->get();
$birthday_people = $jones_birthdays
->merge($smith_birthdays)
->merge($lee_birthdays)
->merge($brandt_birthdays);
return $birthday_people;
我的挑战:我想修改它,让我检查用户的访问,只有添加的每个组的人相应。我想象一些地方这一切都与上面相同,除了我添加条件语句是这样的:
if($user->jones_access) {
$jones_birthdays = Person::birthdays()->jones()->get();
}
else{
$jones_birthdays =NULL;
}
但是,这会因用户的错误,而不访问,因为我不能调用NULL合并(或一个空数组,或者我试过的其他版本的'没有')。
什么是这样做的好方法?
是的,这是它!这两种方式都有效,而第二种方式更短/更清洁。非常感谢你的帮助! –