@RomanTrakhtenberg
Пока не волшебник, только учусь.

Laravel with как использовать where по данным из промежуточной таблицы?

Имеются 4 таблицы.

account_service (pivot table):
user_id (Belongs To Many)
service_id (Belongs To Many)
status

services:
id
tariff_id (One to One)
platform_id (One to One)

platforms:
id
name

tariffs:
id
name

Делаю запрос с подгрузкой данных моделей через модель User:
$services = $this->with('services.tariff','services.platform')->first()->services;

Могу обратится к $services[0]->pivot->status;

Можно ли в запросе делать выборку по условию смежной таблице, где к примеру статус равен 1, что бы не делать перебор в цикле.

Пробовал так:
$services = $this->with('services.tariff','services.platform')->whereHas('services', function($q) {
            $q->where('status', '=', 1);
})->first()->services;

но без успешно...
  • Вопрос задан
  • 1649 просмотров
Решения вопроса 1
@jazzus
В контроллере
$users = User::with(['services' => function($query) {
                  $query->with('tariff','platform')
           ->wherePivot('status',true);
    }])->get();

В модели добавить к отношениям ->withPivot('status')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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