Size: a a a

Laravel для начинающих

2020 January 23

ML

Mehrob Latipov in Laravel для начинающих
Скоуп)
источник

AH

Andrey Helldar in Laravel для начинающих
Vasiliy Pivovarov
Типа я смогу получается вот так сделать ?
И снова привет!)

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

Так вот, дописал в свой пример еще класс:

https://gist.github.com/andrey-helldar/83faf8a6ebe198811b70fc0584282481#file-app-services-yourservicefromuser-php реализует загрузку драйвера в зависимости от существования атрибута header в реквесте;

https://gist.github.com/andrey-helldar/83faf8a6ebe198811b70fc0584282481#file-app-services-yourservicefromconfigpreset-php реализует загрузку драйвера в зависимости от установленного значения в конфиге.
источник

VY

Vladimir Yefremov in Laravel для начинающих
Andrey Helldar
Скоупы не совсем подойдут если нужно проверять заполненность поля в реквесте, а передавать его туда ну такое себе.

НО если такая логика запросов будет использоваться минимум в двух разных классах, то да, лучше всё вынести в скоупы:
// model
public function scopeSetId($query, $id = null) {
 return $query->when($id, function ($query) use ($id) {
   $query->where('id', $id);
 });
}

// controller / service
$loggingRows = Logging::whereNotNull('created_at')
   ->setId($request->get('id'))
т.е. вместо if()
на каждый принимаемый параметр надо написать метод?
public function scopeSetId () .....
источник

AH

Andrey Helldar in Laravel для начинающих
Vladimir Yefremov
т.е. вместо if()
на каждый принимаемый параметр надо написать метод?
public function scopeSetId () .....
Подожди пару минут, как раз пример накидываю)
источник

AH

Andrey Helldar in Laravel для начинающих
Vladimir Yefremov
Нужно было сделать быстро
слепил такую штуку:
    public function showAll(Request $request)
   {
       $query = Logging::whereNotNull('created_at');
       if ($request->filled('id')) {
           $query->where('id', $request->id);
       }
       if ($request->filled('user_id')) {
           $query->where('user_id', $request->user_id);
       }
       if ($request->filled('partner_name')) {
           $query->where('partner_name', 'like', '%' . $request->partner_name . '%');
       }
       if ($request->filled('event_type')) {
           $query->where('event_type', $request->event_type);
       }
       if ($request->filled('page_url')) {
           $query->where('page_url', 'like', '%' . $request->page_url . '%');
       }
       if ($request->filled('description')) {
           $query->where('description', 'like', '%' . $request->description . '%');
       }
       if ($request->filled('date_created')) {
           $query->whereDate('created_at',  $request->date_created);
       }
       $loggingRows = $query->orderBy('id', 'DESC')->with('user')->paginate(100);

       return view('backend.logging_stat.index', [
           'loggingRows' => $loggingRows->appends($request->except(['page']))
       ]);
   }


теперь есть время - можно переделать нормально....
чем заменить эти все ифы?
Модель: https://implode.io/GC0a9K

Контроллер: https://implode.io/bjLWP4
источник

VY

Vladimir Yefremov in Laravel для начинающих
смотрю
источник

VY

Vladimir Yefremov in Laravel для начинающих
выглядит внушительно,.. но как-то представляется дополнительным усложнением... как еще 1 слой абстракции...
источник

VY

Vladimir Yefremov in Laravel для начинающих
у меня тут дело в том, что для каждой модели такие запросы применяются только по 1 разу;

наверно для такого случая эти скоупы - из пушки по воробьям?
источник

AH

Andrey Helldar in Laravel для начинающих
Vladimir Yefremov
у меня тут дело в том, что для каждой модели такие запросы применяются только по 1 разу;

наверно для такого случая эти скоупы - из пушки по воробьям?
Если применяются всего лишь один раз в одном конкретном месте то да, это пушка. В таком случае логику лучше вынести в сервис, а вот примерное представление как должно быть по ссылкам есть)
источник

VY

Vladimir Yefremov in Laravel для начинающих
Andrey Helldar
Если применяются всего лишь один раз в одном конкретном месте то да, это пушка. В таком случае логику лучше вынести в сервис, а вот примерное представление как должно быть по ссылкам есть)
спасибо!
источник

AH

Andrey Helldar in Laravel для начинающих
Vladimir Yefremov
спасибо!
👍
источник

SS

Serg Serdyuk in Laravel для начинающих
Хм, чуть странный вопрос... Можно ли как то принудительно разлогинить всех юзеров? storage/framework/sessions почистил, папку сессий пхп тоже, но авторизация не пропала
источник

AH

Andrey Helldar in Laravel для начинающих
Serg Serdyuk
Хм, чуть странный вопрос... Можно ли как то принудительно разлогинить всех юзеров? storage/framework/sessions почистил, папку сессий пхп тоже, но авторизация не пропала
"из коробки" нельзя.
Как видим реализацию метода logout (https://github.com/laravel/framework/blob/6.x/src/Illuminate/Auth/SessionGuard.php#L488-L511), вначале он берет инстанс текущего авторизованного юзера.

Таким образом, ты можешь написать свою обработку, которая возьмет из таблицы юзеров все записи и пробежит по каждому.
источник

SS

Serg Serdyuk in Laravel для начинающих
да вот уже примерно такое решение и накопал, прогнал юзеров в цикле
источник

Д

Діма in Laravel для начинающих
вопрос
$request->validate([
'title' => 'required|unique:posts|max:255',

posts это название таблицы в БД ?
или модель?
источник

D

DK in Laravel для начинающих
вспомни,что модели пишутся в единственном числе
источник

D

DK in Laravel для начинающих
а таблицы во множественном и подумай)
источник

D

DK in Laravel для начинающих
(вроде так)
источник

RK

Roman Kolosov in Laravel для начинающих
Діма
вопрос
$request->validate([
'title' => 'required|unique:posts|max:255',

posts это название таблицы в БД ?
или модель?
лучше сначала макс а потом unique
источник

RK

Roman Kolosov in Laravel для начинающих
они в цикле проверяются зачем делать запрос к бд, если длина будет больше
источник