具有多个入口点的查询生成器

时间:2017-02-27 15:45:21

标签: laravel laravel-5.4

我想为我的模型使用不同的过滤器,但它们都是可选的。

<OpenIDConnectStrategy> = require(<passport-openid-connect>).Strategy;

passport.use('...', new <OpenIDConnectStrategy>({

因此,只有第一个语句成功时才会运行此代码。

if($foo) {
    $model = Model::where('id', 1);
}
if($bar) {
   $model = $model->where('age', 3);
}

这样可行,但很脏:(

那么可以将模型保存到变量中,这样我就不必在所有if语句中进行静态调用了吗?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你可以在where函数中创建过滤器,这样可以很好地将它们组合在一起。

例如:

$models = Model::where(function ($query) use ($request) {
    $query->where('id', '<>' -1);

    if ($request->has('id')
        $quer->where('id', $request->id);

    if ($request->has('age'))
        $query->where('age', $request->age);

})->get();