У меня сложная настройка, которая включает следующие таблицы.Laravel Eloquent multiple tables
Customers
Transactions
Jobs
Rounds
Job_Rounds
Я хочу вывести всех клиентов, которые просрочены. Я сделал это с помощью следующего запроса:
$data = Auth::user()->clients()->leftjoin('transactions','clients.id','=','transactions.client_id')
->select(DB::raw('sum(gross) as value, email, first_name, last_name, mobile, clients.id, addressline1'))
->groupBy('id','first_name','last_name','email','mobile','addressline1', 'clients.id')
->havingRaw('SUM(gross) < 0')
->get();
Это возвращает все клиент, которые просрочены, который является большим, но теперь я хочу, чтобы иметь возможность фильтровать просроченные клиент по раунду.
Мои отношения заключаются в следующем:
Customers > Jobs.client_id
Customers > Transactions.client_id
Jobs > Rounds via Jobs_Rounds
я бы перейти на мой контроллер в round_id данного раунда, а затем попытаться отфильтровать результаты, основанные на round_id. единственное место, где я храню идентификатор раунда, находится в таблице jobs_rounds, и эта таблица содержит только job_id & round_id.
Благодаря Саймон, я попытался это, но я, кажется, имею вопрос .. Когда я return Client :: First() -> раунды Я ожидал увидеть раунды клиентов, но я получаю сообщение об ошибке: Столбец не найден: 1054 Неизвестный столбец «rounds.job_id» - связь между раундом и клиентом будет проходить через. Job который связан с клиентом, задание связано с раундом через job_rounds –
Работа может быть на многих r ounds, следовательно, таблица job_rounds:/ –
Кажется, что у вас нет 'job_id' в таблице' rounds' – SimonDepelchin