Показать все записи, в которых существует связь (красноречиво)

Попытка построить красноречивый запрос, чтобы вернуть все результаты в базе данных, где существует связь.

$deliveries = Deliverer::has('deliveries')->get()->toArray();

dd($deliverer);

Это возвращает результаты, которые включают нескольких доставщиков без каких-либо доставок.

Модель Доставщика включает:

public function deliveries() {
  return $this->hasMany(Deliveries::class)->latest();
}

Модель поставки включает:

public function deliverer() {
  return $this->belongsTo(Deliverer::class);
}

Кто-нибудь может увидеть, что здесь происходит не так, пожалуйста?

Вы имеете в виду Deliverer::has('deliveries') вместо Delivery::has('deliveries')?

Jonas Staudenmeir 14.09.2018 01:22

Извините за опечатку! Буду редактировать.

party-ring 14.09.2018 10:02

Что в результате dd(Deliverer::has('deliveries')->toSql());?

Jonas Staudenmeir 14.09.2018 10:20
"select * from 'deliverers' where exists (select *, (select count(*) from 'bid_for_deliveries' where 'deliveries'.'id' = 'bid_for_deliveries'.'delivery_id' and 'bid_for_deliveries'.'deleted_at' is null) as 'bids_count' from 'deliveries' where 'deliverers'.'id' = 'deliveries'.'deliverer_id' and 'deliveries'.'deleted_at' is null) and 'deliverers'.'deleted_at' is null"
party-ring 14.09.2018 10:40

Запрос выглядит хорошо. Какую базу данных вы используете? Предоставьте несколько примеров данных о sqlfiddle.com, которые позволят нам воспроизвести проблему.

Jonas Staudenmeir 14.09.2018 16:03
0
5
85
0

Другие вопросы по теме