@lemonlimelike

Как правильно построить условие?

Всем привет.
$std = DB::table('role__users')->where([
            ['user_id','=', Auth::id()],
        ])->get();

        //$this->vars['roled'] = dd($std);

        foreach ($std as $s) {
            if($s->role_id != '1'){
                DB::table('role__users')->insert([
                    ['user_id' => Auth::id(), 'role_id' => '1']
                ]);
            }
        }

Не получается сделать простейшие условие, оно просто не хочет работать как надо.
Суть этого условия: Вначале узнаю какой пользователя на странице. Затем коллекцию прогоняю через foreach(кстати, как это правильно называется?:) ), в цикле ставлю условие, если поле role_id не равняется "1"
то использую метод insert добавляю новую запись в таблицу, но она даже не добавляется, потому что записи с таким user_id там нет, так вот... как мне правильно сделать? Если не поняли, еще раз расскажу что хочу сделать: После регистрации пользователя редиректит на другую страницу, и на этой странице должны происходить такие действия, в таблицу role__users должна добавляться новая запись, типа с его id и его привилегией, а привилегия по стандарту должна быть равна "1" т.е. user, Как мне такое сделать?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 2
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Затем коллекцию прогоняю через foreach(кстати, как это правильно называется?
Это называется "обход в цикле" (один из вариантов названия "этого").

в цикле ставлю условие, если поле role_id не равняется "1"
У Вас это условие когда-нибудь выполняется, хотя бы раз? P.S. При сравнении с цифрой, т.е. вот в таком варианте - if($s->role_id != '1') - "1" не обязательно оборачивать в кавычки, и наверное, лучше будет даже не оборачивать 1 в кавычки, если "1" - это именно (всегда) цифра.

Ну и в целом, я бы рекомендовал Вам воспользовать двумя чудесными штуковинами из Laravel:
1. Eloquent
2. Аутентификация и авторизация - их прелесть в том, что механизм полностью модульный и Вы с минимальными телодвижениями можете использовать уже готовую систему, выбирая из нее только те части, которые Вам нужны, либо же, сразу использовать готовую систему, от регистрации до восстановления паролей.

В т.ч. вот тут есть очень неплохие уроки про основы Laravel, там же есть 15-ый урок, на тему аутентификации (бесплатный).
Ответ написан
solotony
@solotony
покоряю пик Балмера
че-то ты там намудрил

После регистрации пользователя редиректит на другую страницу, и на этой странице должны происходить такие действия, в таблицу role__users должна добавляться новая запись, типа с его id и его привилегией, а привилегия по стандарту должна быть равна "1" т.е. user,

role__users это "pivot" с полями 'user_id' и 'role_id' ?
так бери просто и вставляй. зачем тебе какие-то обходы, выборки условия ?

если не хочешь что бы записи двоились - объяви ключ ('user_id' и 'role_id') уникальным
и вставку делай insert ignore

"с точки зрения laravel" правильно так:

для созданного пользователя обрабатывать событие created и в этом обработчике делать такое добавление . ну и читай все что тебе посоветовал Евгений Вольф Евгений Вольф
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы