根据相关表提取数据

时间:2019-01-16 16:28:01

标签: laravel

我有一张桌子:

events [id,'name','date'],

门票['id',event_id','isAvailable'],

order_tickets ['order_id','ticket_id'],

orders ['id','buyer_id','status']。

我需要接收所有带有事件票证的订单,其中日期> =今天(不包括过去事件的票证。)。

下一个查询是

$userId = 1;
$orders = Order::with([
        'tickets',
        'tickets.event',
    ])->where('buyer_id', $userId)
        ->where('status', 'sold')
        ->get();

1 个答案:

答案 0 :(得分:0)

您可以使用whereHas()方法和today()帮助函数来实现此目的:

$orders = Order::with('tickets.event')
    ->whereHas('tickets.event', function ($query) {
        $query->whereDate('date', '>=', today());
    })
    ->where('buyer_id', $userId)
    ->where('status', 'sold')
    ->get();