laravel获得最佳预订酒店数

w41d8nur  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(260)

有一个酒店预订申请,我需要得到4个顶级预订酒店。
我有一个关系,在酒店预订.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结构

odopli94

odopli941#

在你的 Hotel.php 模型

public function reservation()
{
    return $this->hasMany('App\Reservation');
}

在控制器中,您可以通过

Hotel::withCount('reservation')->orderBy('reservation_count', 'desc')->limit(4)->get();
t98cgbkg

t98cgbkg2#

Reservation::withCount('hotel')->orderBy('hotel_count', 'desc')->take(4)->get();

看一看https://laravel.com/docs/5.6/eloquent-relationships#counting-相关模型

相关问题