我想在我的模型中定义查询构建器的块: 所以它的功能可能会像这样使用:
class Transactions extends Eloquent {
public function dateRange($from,$to){
return $this->whereBetween('date', [$from,$to]);
}
public function category($categ){
return $this->where(['categ' => $categ]);
}
...etc , more query block functions
}
所以我可以链接和重用这些,就像这样:
$t = new Transactions();
dd($t->category($cat)->dateRange()->get())
或者我想要的......
$t2 = new Transactions();
dd($t2->dateRange()->get())
这个(第一个使用示例)将使调用未定义的方法Illuminate \ Database \ Query \ Builder :: dateRange()
P.S。第二个例子有效,但我需要将多个Qblock链接到我的模型实例......
答案 0 :(得分:0)
尝试更改您的代码:
class Transactions extends Eloquent {
public function scopeDateRange($query, $from, $to){
return $query->whereBetween('date', [$from, $to]);
}
public function scopeCategory($query, $categ){
return $query->where(['categ' => $categ]);
}
}
您应该查看Eloquent的查询范围文档:http://laravel.com/docs/5.0/eloquent#query-scopes。