如何在Laravel 4.2中创建自定义DB Query Builder方法

时间:2017-05-02 15:20:56

标签: php laravel laravel-4 laravel-query-builder

我正在寻找一种方法来创建类似于Eloquent范围的自定义数据库查询方法。

例如

class User extends Eloquent 
{
    public function getActiveUsers()
    {
        //...
        //...
        $data = DB::table('myTable')
            ->where('active', 1)
            ->myFun($var1, $var2) //<-- custom method
            ->limit(10)->get();
        dd($data);
    }
}

myFun()中,我会有类似这样的事情

public function myFun()
{
    if(condition 1)
    {
        $query->where('col', 12)
    }
    if(condition 2)
    {
        $query->where($va2, 'test')
    }
}

最后这个where子句将被添加到主查询中。

我找到了this solution,但它适用于Laravel 5.我正在寻找Laravel 4.2。

请注意:该应用程序处于生产阶段,因此我无法使用Eloquent范围,所以我希望创建一些类似的东西。

1 个答案:

答案 0 :(得分:-1)

根据您的要求,遵循以下概念:

class User extends Eloquent 
{
    public $query = null;
    public function getActiveUsers()
    {
        //...
        //...
        $this->query  = DB::table('myTable');
        $this->myFun($var1, $var2) //<-- custom method
        $data = $this->query->limit(10)->get();
        dd($data);
    }

    public function myFun()
    {
        if(condition 1)
        {
            $this->query->where('col', 12);
        }
        if(condition 2)
        {
            $this->query->where($va2, 'test');
        }

        $this->query->where('active', 1);
    }
}