как объединить несколько результатов из 2 таблиц в laravel и вернуть их - PullRequest
0 голосов
/ 17 января 2020

У меня есть 3 таблицы (пользователи, основные меню, подменю). каждая из этих таблиц содержит столбец role_id. в таблицах меню (main & sub) у меня есть элементы, которые нужно показать всем пользователям (независимо от того, что такое user_role), и элементы, которые нужно показать для определенных c пользователей (некоторые для администраторов, некоторые для обычных пользователей). теперь, когда администратор вошел в систему, я хочу собрать результат меню, которое содержит публичные c меню, а также меню, указанные для роли администратора. и когда пользователь вошел в систему, я хочу собрать результаты меню, которые содержат публичные c меню, а также меню, указанные для обычных пользователей. ПРИМЕЧАНИЕ: меню и подпрограммы, предназначенные для всех пользователей, не имеют role_id (role_id=NULL), меню и подпрограммы для администраторов имеют role_id=1 меню, а подпрограммы для обычных пользователей имеют role_id=8

. Я пишу следующий код, но этот дает только меню с указанным c role_id, я хочу объединить меню и подсети с role_id=NULL результатом.

public function MenuPicker(User $user)
{
    //get role of logged in user
   $role = $user->role()->first();

   //get menus of user related to role
    return $role->main_menus()->with('sub_menus')->get();

}

это класс главного меню:

public function role()
{
    return $this->belongsTo(Role::class);
}

public function sub_menus()
{
    return $this->hasMany(UserSubMenu::class);
}

и это класс подменю:

public function main_menu()
{
    return $this->belongsTo(UserMainMenu::class);
}

с нетерпением жду ответа от вас. спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...