将帮助器转换为模型方法

时间:2014-05-07 01:32:23

标签: php laravel eloquent

目前我使用以下助手:

function whereHasNested($query, $key, $relationship)
{
    if(Input::has($key))
    {
        $callback = function($q) use (&$relationship, &$key, &$callback) {
            if(!$relationship) $q->whereId(Input::get($key));
            else $q->whereHas(array_shift($relationship),$callback);
        };

        $callback($query);
    }
}

这样可以避免在 whereHas 中写入多个 whereHas 。这是一个用法示例:

$query = Model::query();

whereHasNested($query, 'package_id', ['club', 'membership', 'package']);

return $query->orderBy('update_at', 'DESC')->paginate(10);

但是,如何将其转换为 BaseModel 中的方法?

所以我可以把它链接起来:

$query->whereHasNested($key, $relationship);

1 个答案:

答案 0 :(得分:0)

Query Scopes的用途是什么:

public function scopeWhereHasNested($query, $key, $relationships)
{
    // your code here...
}

// then use it wherever you want

Model::whereHasNested($key, $relationships);