Как сделать выборку Laravel?

Здравствуйте!
Не могу решить такую задачу:
Есть 4 таблицы: User, Categories, category_user, Tender
User, Categories я связал многие ко многим.

Мне нужно выводить тендеры в зависимости от того какая категория у пользователя, раньше когда по одной категории можно было выбирать а не по нескольку я делал это так:

$user = User::find($id);
return Tender::where('published_at', '<', Carbon::now())
        ->where('date_end', '>', Carbon::now())
        ->where('category', $user->category)
        ->where('status', true)
        ->with(['rates'])
        ->orderBy('id', 'DESC')
        ->get();
  • Вопрос задан
  • 129 просмотров
Решения вопроса 2
@jazzus
$categoryIds = [1, 2, 3];
$builder->whereIn('category_id', $categoryIds);

Но лучше связать категории и тендеры и получать через
$user->categories()->with('tenders')
Ответ написан
@Kostik_1993
PHP Backend Developer, Laravel, Yii, Vue, Node.js
$categoryIds = [1, 2, 3];
->whereHas('categories', function ($categories) use ($categoryIds) {
$categories->whereIn('id', $categoryIds);
})


Возможно будет ругаться, точно не помню, нудно id поменять на category_user.id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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