Поиск Laravel по сухому принципу


Поиск Laravel по сухому принципу

15.12.2019 07:52:03 Просмотров 52 Источник

У меня есть несколько функций поиска, которые все выглядят примерно так:

    public function searchEntity(Request $request)
    {       
        ... // Some variables and other stuff 

        $q = $request->q;
        $entities = Entity::where('name', 'LIKE', '%' . $q . '%')->paginate(15);
        $entities->appends(['search' => $q]);
        return view(
            'entity',
            compact('entities', ...)
        );
    }

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

У вопроса есть решение - Посмотреть?

Ответы - Поиск Laravel по сухому принципу / Laravel search following the DRY principle

Является ответом!
mare96

15.12.2019 08:09:24

Мое предложение-создать признак с областью действия.

Так что у вас будет что-то вроде этого в вашей черте:

trait search
{
    public function scopeSearch(Builder $builder)
    {
        $request = request();
        $q = $request->q;

        return $builder->where('name', 'LIKE', '%' . $q . '%')->paginate(15);
    }

}

Чем использовать вашу черту в вашей модели. И в вашем контроллере для каждой модели вы можете сделать вот так:

$entities = Entity::search();

Просто прочитайте о чертах и областях, и я думаю, что это то, что вам нужно.

Некоторые предложения: ссылка-1, Ссылка-2 .

Удачи вам!

https://stackoverflow.com/questions/59346028/laravel-search-following-the-dry-principle/59346197#comment104889389_59346197
это не сфера применения
https://stackoverflow.com/questions/59346028/laravel-search-following-the-dry-principle/59346197#comment104889919_59346197
Это не оптимальный способ сделать это и должен включать в себя область.
https://stackoverflow.com/questions/59346028/laravel-search-following-the-dry-principle/59346197#comment104889935_59346197
Я сказал, чтобы создать область внутри признака.
https://stackoverflow.com/questions/59346028/laravel-search-following-the-dry-principle/59346197#comment104889943_59346197
да, но это не так, как вы это делаете
https://stackoverflow.com/questions/59346028/laravel-search-following-the-dry-principle/59346197#comment104889951_59346197
Теперь это так, Спасибо.
Помочь в развитии проекта:
Закрыть X