Laravel查询生成器链接(Laravel query builder chaining)

编程入门 行业动态 更新时间:2024-10-26 00:28:14
Laravel查询生成器链接(Laravel query builder chaining)

我想在我的模型中定义查询构建器的块:所以它的结点可能像这样使用:

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.

更多推荐

本文发布于:2023-07-25 10:39:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1259996.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:生成器   链接   Laravel   chaining   builder

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!