Задать вопрос
deadloop
@deadloop
Активно осваиваю PHP

Как доработаь пагинацию, что-бы вывести список по определенному критерию?

Мне нужно вывести сотрудникок по определенному кретерию, который задан в параметре запроса.
api/employes?page=2&limit=40&tags=3,4
Я вывожу пользователей, в колисетке 40 штук на 2-ой странице у которых тэги 3 и 4.
Я разобрался как выводить страницу и лимит, а как вывести по определенному тэгу, не могу разобратся.

Контроллер:
public function index(Request $request)
    {
        $limit = $request->get('limit');
        $user = Employe::with('tags')->paginate($limit);
        return $user;
    }


Моддель:
public function tags()
    {
        return $this->belongsToMany(Tag::class, 'employe_tag', 'tag_id', 'employe_id');
    }
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой 1 комментарий
Решение пользователя Ilya Loopashko К ответам на вопрос (2)
deadloop
@deadloop Автор вопроса
Активно осваиваю PHP
Вот нашел как можно реализовать

public function index(Request $request)
    {
        $limit = $request->get('limit');
        $tags = $request->get('tags');
        $array_tag = explode(",", $tags);

        $employes = Employe::query()
            ->when($array_tag, function($q) use ($array_tag){
                $q->whereHas('tags', function($q) use ($array_tag) {
                    $q->whereIn('tag_id', $array_tag);
         });

    })->paginate($limit);

        return $employes;
    }
Ответ написан
Комментировать