是否有可能"追加" 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
。
答案 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();
等等。这样您就可以保持链接范围。