как написать запрос для извлечения записи в laravel? использование ролей

#php #jquery #mysql #sql #laravel

#php #jquery #mysql #sql #laravel

Вопрос:

Я хочу, чтобы, если пользователь, принимающий заказ, вошел в систему, тогда были созданы его собственные области и создан его администратор (с ролью = 1) или суб-администратор (с ролью = 2) в $areas

у меня есть 3 таблицы: (1.пользователи 2.области 3.исполнитель заказов)
у меня есть 3 роли: (1.администратор 2. суб-администратор 3. исполнитель заказов)

администратор и субадминистратор могут создавать (принимающий заказы и область) принимающий заказы также может создавать (область)

каждый принимающий заказы связан с ot_of в таблице user (для admin(id) и sub-admin(id))

каждая область связана с created_by

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

 if(Auth::user()->role == 1 ){
either ot_of (admin(ordertaker) role = 1 or subadmin(ordertaker) role = 2)
if{
then get area if ot_of belongs to admin then get both area created_by(ordertaker and admin)  
}else
{
then get area if ot_of belongs to sub-admin then get both area created_by(order taker and sub-admin)  

}
}
  

как я могу написать этот запрос, каждый человек однозначно идентифицируется с уникальным идентификатором
, теперь я получаю области, используя этот код

  $idss = [Auth::id()];
        if (Auth::user()->role < 3) {
            $idss = array_merge($idss, User::where('ot_of', Auth::id())->pluck('id')->toArray());
        }
        $fitered_area = Area::all();
        $allareas = $fitered_area->whereIn('created_by', $idss);
  

но проблема в том, что если пользователь входит в систему, он не может иметь доступа к своим областям администрирования, потому что он его не создавал

Ответ №1:

Если я могу предложить более динамичное решение вашей проблемы, проверьте это в разрешениях Laravel

Жесткое кодирование ролей и разрешений таким образом очень быстро запутается.