Laravel查询生成器链接

时间:2015-09-01 09:04:52

标签: php laravel orm

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

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链接到我的模型实例......

1 个答案:

答案 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