如何在laravel中选择嵌套关系中的最低项

时间:2019-09-02 10:45:00

标签: php laravel

我在这里有一个酒店模型,一个房间模型和一个房价模型,我想通过嵌套关系查询以找到最便宜的房间,所以我必须获取当今时间的所有房间价格,并排序以选择价格最低的每个房间,然后为我的结果选择最低的房间:

在我的模型关系飞船中,我选择了每个房间所有价格之间的最低价格:

// this will bring me the lowest price for the room in the day
public function roomPricingHistorySearch()
{
    return $this->hasOne(roomprices::class,'room_id','id')->orderBy('sales_price','ASC');
}

在这里我要选择所有房间之间的最低价

$data = Hotel::with([
    'rooms.roomprices' => function ($query) {
        //here i want to pick the lowest price room of all.
        $query->Where('is_deleted', '1');
    }
]);

1 个答案:

答案 0 :(得分:1)

如果您按价格对房间进行排序,则获得集合中的第一个。那将是最便宜的一个

代码示例

$product->ticketTypes()->hasActivePrices()->orderBy('price')‌​->first()

这将导致按价格排序的集合,最低的将是第一个。这就是为什么我们要先做()

$data = Hotel::with([
    'rooms.roomprices' => function ($query) {

        $query->orderBy('sales_prices', 'ASC')->limit(1); // try this
    }
]);
``