【发布时间】:2018-03-23 20:46:10
【问题描述】:
我有以下表格:
场地
- 身份证
优惠
- 身份证
- venue_id
订单
- 身份证
- offer_id
- 数量
场地可以有很多优惠,优惠可以有很多订单。这都是在适当的 Eloquent 模型中建模的,如下所示:
class Venue extends Model
{
public function offers()
{
return $this->hasMany(Offer::class);
}
}
class Offer extends Model
{
public function orders()
{
return $this->hasMany(Order::class);
}
}
我想运行一个查询,让我可以查看每个场地及其拥有的订单数量。例如
venue_id | number_of_orders
---------------------------
5 | 20
15 | 0
8 | 123
我很容易使用原始 SQL 做到这一点,如下所示:
select venues.id, sum(offersGrouped.number_of_orders) as total_number_of_orders
from venues
left outer join (
select offers.id, offers.venue_id, sum(orders.quantity) as number_of_orders
from offers
left outer join orders on offers.id = orders.offer_id
group by offers.id
) offersGrouped on venues.id = offersGrouped.venue_id
group by venues.id;
但是,我怎样才能使用 Eloquent 做同样的事情呢?
我使用的是 Laravel 5.1,但如果需要,我不介意答案是否使用新版本 Laravel 的功能。
【问题讨论】:
标签: laravel laravel-5 laravel-5.1 laravel-eloquent