【发布时间】:2017-12-21 06:21:23
【问题描述】:
我昨天在这里问了一个问题 (Laravel Eloquent query build select min value)。我正在更新我的查询以选择房间。
我以前的查询:
$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);
我更新的 uqery:
$rooms = Hotel::with(['room' => function($query) {
$query->orderBy('price', 'asc')->first();
},
'room.image',
'room.amenities'])
->get();
我遇到了一个问题。 如果用户选择设施,那么只有我包括以下查询,
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);
}
如何将其添加到更新后的查询中?,
试过这种方法,但没有成功
$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();
【问题讨论】:
标签: php laravel laravel-5 eloquent laravel-5.5