Ich habe eine Frage hier gestern (Laravel Eloquent query build select min value) gestellt. Von diesem aktualisiere ich meine Abfrage, um Räume auszuwählen.Laravel Eloquente eine zu viele Beziehung, dynamische Abfrage der verwandten Tabelle hinzufügen
Meine vorherige Abfrage:
$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);
//print_r($request->location_id);
}
// If amenities is there add it to query
if($request->filled('amenities')){
$amenities = $request->amenities;
$count = count($amenities);
$buildquery->withCount(['amenities' => function($query) use ($amenities){
$query->whereIn('amenities_id', $amenities);
}])
->having('amenities_count', $count);
}
// If price is there add it to query
if ($request->filled('min_price')) {
$buildquery->whereBetween('price', [$request->min_price, $request->max_price]);
}
$buildquery->Where('astatus', 1)->Where('status', 0);
//$buildquery->orderBy('price', 'DESC')->take(1);
$rooms = $buildquery->simplePaginate(20);
Meine aktualisiert uqery:
$rooms = Hotel::with(['room' => function($query) {
$query->orderBy('price', 'asc')->first();
},
'room.image',
'room.amenities'])
->get();
ich in ein Problem lief. Wenn der Benutzer die Annehmlichkeiten, dann nur ich die folgende Abfrage am einschließlich
if($request->filled('amenities')){
$amenities = $request->amenities;
$count = count($amenities);
$buildquery->withCount(['amenities' => function($query) use ($amenities){
$query->whereIn('amenities_id', $amenities);
}])
->having('amenities_count', $count);
}
Wie kann ich dies meiner aktualisiert Abfrage hinzufügen?,
versucht auf diese Weise, aber kein Glück
$rooms = Hotel::with(['room' => function($query) {
$query->orderBy('price', 'asc')->first();
},
'room.image',
'room.amenities' => function($query) {
$query->withCount(['amenities' => function($query) use ($amenities){
$query->whereIn('amenities_id', $amenities);
}])
->having('amenities_count', $count);
}])->get();
Im mit 'amenities_room' Tabelle enthält' 'room_id' und amenities_id' Spalten –
Aber welche Zählung möchten Sie bekommen? In 'withCount' arbeiten Sie mit' amenities' und nicht mit 'amentities_room'. Vielleicht möchtest du '$ query-> whereIn ('adessants_id', $ advances)' 'außerhalb von' withCount' dann verschieben? –
buchstäblich ich weiß nicht, was los ist mit Abfrage, lassen Sie mich lernen und wieder kommen –