Laravel获得了最高的酒店数量

时间:2018-04-24 10:45:47

标签: mysql laravel

有了酒店预订申请,我需要获得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结构

enter image description here

2 个答案:

答案 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();