有了酒店预订申请,我需要获得4家顶级酒店。
我与 Reservation.php
中的酒店有关系public function hotel(){
return $this->belongsTo('App\Hotel');
}
我可以通过以下查询实现我想要的目标:
Reservation::select(DB::raw('*, COUNT(hotel_id) as hotel_count'))->with('hotel')->groupby('hotel_id')->orderby('hotel_count', 'desc')->limit(4)->get();
以上查询是否有可用的简化版本?
更新:Db结构
答案 0 :(得分:0)
Reservation::withCount('hotel')->orderBy('hotel_count', 'desc')->take(4)->get();
查看https://laravel.com/docs/5.6/eloquent-relationships#counting-related-models
答案 1 :(得分:0)
在Hotel.php
模型中
public function reservation()
{
return $this->hasMany('App\Reservation');
}
在您的控制器中,您可以通过
访问Hotel::withCount('reservation')->orderBy('reservation_count', 'desc')->limit(4)->get();