ich die folgende Abfrage habe (getrimmt), die Zimmer Benutzer für die Reservierung zur Liste:Laravel Eloquent Abfrage build wählen min Wert
$buildquery=Room::
with(['hotel' => function ($query) {
$query->where('status', 0);
}])
->with('image')->with('amenities');
if ($request->filled('location_id')) {
$buildquery->Where('city', $request->location_id);
}
$buildquery->Where('astatus', 1)->Where('status', 0);
$rooms = $buildquery->simplePaginate(20);
tatsächliche Abfrage (nicht beschnitten):
select `rooms`.*,
(select count(*) from `amenities` inner join `amenities_room` on `amenities`.`id` = `amenities_room`.`amenities_id` where `rooms`.`id` = `amenities_room`.`room_id` and `amenities_id` in (?)) as `amenities_count`
from
`rooms`
where `city` = ? and `price` between ? and ? and `astatus` = ? and `status` = ? having
`amenities_count` = ?
limit 21 offset 100
Es listet alle verfügbaren Zimmer im Hotel auf. Ich muss nur ein Zimmer für ein Hotel mit dem geringsten Preis auswählen.
Ihre Abfrage ergibt insgesamt nur ein Ergebnis. Hinweis: Ich habe viele Hotels (jedes Hotel hat viele Zimmer) –
Also wenn ich dich richtig verstehe. Sie möchten die günstigsten Zimmer für jedes Hotel, das Sie haben. Dann ist es besser, Relationen aus dem Hotelmodell zu machen und eine Abfrage wie 'Hotel :: mit ('room' => function ($ query) { $ query-> orderBy ('price', 'asc') -> first)); }]) -> get(); ' – user3350597
Hmm denkt auch gleich. Aber alle Beziehungen, die bereits zu Räumen wie (Annehmlichkeiten, Zimmertypen, Bilder) und Standortfeldern gebaut wurden, sind nur im Zimmer verfügbar –