我正在開發我的第一個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合併(或一個空數組,或者我試過的其他版本的'沒有')。
什麼是這樣做的好方法?
是的,這是它!這兩種方式都有效,而第二種方式更短/更清潔。非常感謝你的幫助! –