有条件的地方在Laravel

时间:2016-10-10 18:42:53

标签: php laravel laravel-5 orm eloquent

我有疑问如何巧妙地处理条件问题。 我有n个字段过滤器,例如:年龄,姓名,性别等。

现在我可以使用动态范围来处理这个问题:

public function scopeAge($query, $age)
{
    if ($age) {
        return $query->where('age', $age);
    }
    return $query;
}

以及其他字段等。

但是我需要更多通用的例子(写所有字段都有点麻烦)。使用Laravel可以想出一些东西吗?我想到的课程例如:UserQuery

class UserQuery
{
    private $query;

    public function __construct($query)
    {
        $this->query = $query;
        $this->build();
    }

    private function build()
    {
        $this->appendAge();
        $this->appendName();
    }

    private function appendAge()
    {
        $age = Input::get('age');
        if ($age) {
            $this->query->where('age', $age);
        }
    }

    private function appendName()
    {
        $name = Input::get('name');
        if ($name) {
            $this->query->where('name', $name);
        }
    }

    public function toQuery()
    {
        return $this->query;
    }
}

在模型中可以称为:

public function scopeFilters($query)
{
    $userQuery = new UserQuery($query)
    return $userQuery->toQuery();
}

这只是我的想法,也许有人会更好。

0 个答案:

没有答案