Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.08.2016 22:54:23

Помогите с моделькой

Всем привет. У меня есть две таблицы:

   users (id int, login varchar(20))
   permitions (user_id int, permition_id int)

Все свел до атомарности. В модели users у меня прописано:

    protected $table = "users";
    protected $fillable = ['login'];

Все. Мне нужна какая-то конструкция, которая бы еще позволяла получать набор доступов. Ну, к примеру, в контроллере я обращаюсь:

$users = Users::where('login','admin')->get();

И у $users было бы свойство типа $user->permitions; Массив это или еще что, не знаю, но, чтобы в вьюхе я имел доступ к нему и мог бы переберать foreach - ем. У пользователя может быть несколько доступов, может быть один, может не быть.

Умеет такое laravel?

Не в сети

#2 19.08.2016 05:32:05

Re: Помогите с моделькой

Можно обойтись и одной таблицей users. Добавьте в нее поле permissions (text) . и храните там массив где ключ это имя раздела, а значение 0 или 1. Затем создайте функцию или директиву для обработки этого массива и возвращайте bool значение

Не в сети

#3 19.08.2016 06:46:15

Re: Помогите с моделькой

Умеет такое laravel?

Умеет. Конкретно здесь связь One-To-Many, которую нужно настроить (если еще не настроена) и затем загрузить permissions с помощью eager loading:

$users = Users::where('login','admin')->with('permissions')->get();

После этого permissions можно перечислять с помощью foreach:

$user = Users::where('id', 1)->first();

И в представлении:

@foreach ($user->permissions as $permission)
    {{ $permission }}
@endforeach

PS: У вас ошибка в слове permissions, лучше исправить. smile И еще, название моделей по соглашению должны быть в единственном числе, а название таблицы - во множественном ('User::', 'users').

Не в сети

#4 20.08.2016 01:11:18

Re: Помогите с моделькой

+1 За вариант Алексея
Ваша тема, кстати, хорошо раскрыта в видео Laracasts, в цикле серий Fundamentals

Не в сети

Подвал раздела