У меня есть 3 класса, связанных следующим образом:
Exhibitor
'- Bills
'- Tickets
Счета и билеты используют черту SoftDeletes, а в классе экспонента у меня есть такое отношение:
public function tickets()
{
return $this->hasManyThrough(Ticket::class, Bill::class);
}
Мне нужнополучить все Билеты, включая удаленные (withTrashed
), но это также должно включать все удаленные Счета.Проблема в том, что withTrashed применяется только к модели билетов, а не к счетам.
Этот запрос
$tickets = exhibitor()->tickets()->withTrashed()
->where('bills.updated_at', '>=', Carbon::parse($since))
->orderBy('tickets.id')
->get();
Создает этот SQL
select `tickets`.*, `bills`.`exhibitor_id` from `tickets`
inner join `bills` on `bills`.`id` = `tickets`.`bill_id`
where `bills`.`deleted_at` is null
and `bills`.`exhibitor_id` = ?
and `bills`.`updated_at` >= ?
order by `tickets`.`id` asc
Принимая во внимание, что яэтот SQL должен быть нужен без "bills
. deleted_at
is null", например:
select `tickets`.*, `bills`.`exhibitor_id` from `tickets`
inner join `bills` on `bills`.`id` = `tickets`.`bill_id`
where `bills`.`exhibitor_id` = ?
and `bills`.`updated_at` >= ?
order by `tickets`.`id` asc
Но я не вижу никаких вариантов, где я мог бы установить withTrashed () для модели Билла.Я думал, что можно установить запрос обратного вызова для метода hasManyThrough, но в соответствии с API это не поддерживается.Это кажется таким простым, и у меня такое ощущение, что я что-то упускаю, но не могу найти это ...