Laravel Eloquent:附加查询

时间:2015-07-08 16:06:15

标签: php laravel eloquent

是否有可能"追加" Laravel中的查询?

例如,在此示例代码中如此:

function crunchNumbersForToday()
{
    return $this->crunchSomeInformationInRange(Payments::where('created_at', Carbon::now()));
}

function crunchNumbersInRange($range)
{
    $paymentsToCrunch = Payment::where('state', 'payed')->append($range)->get();

    // Work with the payments
}

因此,在这种情况下,where字段的created_at会附加到state等于payed的查询中。这会产生类似的结果:where created_at = '2015-07-08 12:00' AND state = payed

1 个答案:

答案 0 :(得分:4)

我认为你可以创建一个scope

对于您的代码(在Payment模型中):

function scopeToday($query)
{
    return $query->where('created_at', Carbon::now());
}

function scopeNumbersInRange($query)
{
    return $query->where('state', 'payed');

    // Work with the payments
}

然后在代码中的其他地方调用它,如:

Payment::numbersInRange()->today()->get();

编辑: 你也可以让它们变得动态:

function scopeDate($query, $date)
{
    return $query->where('created_at', $date);
}

...

Payment::numersInRange()->date(Carbon::now())->get();

等等。这样您就可以保持链接范围。