我想在我的模型中定义查询构建器的块:所以它的结点可能像这样使用:
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 }所以我可以链接ans重用这些,如下:
$t = new Transactions(); dd($t->category($cat)->dateRange()->get())或者我想要的......
$t2 = new Transactions(); dd($t2->dateRange()->get())这个(第一个使用示例)将调用一个未定义的方法Illuminate \ Database \ Query \ Builder :: dateRange()
ps第二个例子有效,但我需要将多个Qblock链接到我的模型实例...
I want to define blocks of query builder within my model: So it's cunctions might be used like this:
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 }so I could chain ans reuse these, like so:
$t = new Transactions(); dd($t->category($cat)->dateRange()->get())or as i desire ...
$t2 = new Transactions(); dd($t2->dateRange()->get())This (first example of usage) will thow A Call to undefined method Illuminate\Database\Query\Builder::dateRange()
p.s. second example works, but i need to chain more than one of Qblocks to my model instance...
最满意答案
尝试更改您的代码,如下所示:
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 。
Try to change your code like this:
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]); } }You should take a look at the query scope documentation of Eloquent : http://laravel.com/docs/5.0/eloquent#query-scopes.
更多推荐
发布评论