Попытка построить красноречивый запрос, чтобы вернуть все результаты в базе данных, где существует связь.
$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);
}
Кто-нибудь может увидеть, что здесь происходит не так, пожалуйста?
Извините за опечатку! Буду редактировать.
Что в результате dd(Deliverer::has('deliveries')->toSql());
?
"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"
Запрос выглядит хорошо. Какую базу данных вы используете? Предоставьте несколько примеров данных о sqlfiddle.com, которые позволят нам воспроизвести проблему.
Вы имеете в виду
Deliverer::has('deliveries')
вместоDelivery::has('deliveries')
?