最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • laravel查询不再需要写大量if else判断了!

    正文概述 六哥   2021-04-7   11

    下面由laravel教程栏目给大家介绍《laravel查询不在需要写大量ifelse判断了,只需要配置一下即可 》,希望对需要的朋友有所帮助!

    背景

    公司主要业务使用是的PHP 语言开发,用的laravel 框架,在做一些列表过滤查询常常会出现如下很难维护的代码:

            //若干代码 根据参数执行不同where
            if (request('has_score')) {
                $article = $article->with(['scores' => function ($query) {
                    $query->where('type', self::TYPE);
                    $query->with('user');
                }]);
            }
            if (has_module('Audit')) {
                $article = $article->with(['auditing' => function ($query) {
                    $query->orderBy('id', 'desc');
                }]);
            }
            $article = $article->with(['videos' => function ($query) {
                $query->where('type', VIDEO);
            }])->with(['audios' => function ($query) {
                $
                query->where('type', AUDIO);
            }]);

    解决

    如果可以将这些查询进行配置起来,根据配置来查询数据,而不是在代码中直接通过if来判断,这样代码会优雅一些。我自己开发一个服务包laravel-query-builder。

    laravel-query-builder 是laravel框架根据已有配置来执行查询条件构造器服务包

    Install

    composer require zyimm/laravelquery-builder

    Require

        {
          "require": {
              "php": ">=7.0",
              "fideloper/proxy": "^4.0",
              "laravel/framework": ">=5.5"
            }  
        }

    Usage

    /**
    // 目前支持条件操作符
        '=',
        '<>',
        '>',
        '>=',
        '<',
        '<=',
        'like',
        'full_like',
        'in',
        'not_in',
        'between',
        'not_between'
    **/
    use Illuminate\Support\Facades\DB;
    use zyimm\query\build\QueryWhere;
    /**
     * @var QueryWhere $build
     */
    $build = app('QueryWhere');
    //提交过来数据
    $data = [
        'log_id' => 20,
        'user_id'=> 'zyimm',
        'user_name' => "zyimm,12"
    ];
    //配置数据库字段查询操作
    $condition =[
        '=' => [
            'log_id'
        ],
        'not_in' => [
            'user_id'
        ],
        'between' => [
            'user_name'
        ],
        'full_like' => [
            'user_id'
        ],
        '<>' => [
            'user_id'
        ],
        '>' => [
            'user_id'
        ]
    ];
    DB::enableQueryLog();
    //model
    \App\Models\Log::query()
        ->where(function ($query) use ($build, $data, $condition){
            $build->buildQueryWhere($data ,$condition, $query);
        })->get();
    dd(DB::getQueryLog());

    生成SQL查询记录如下截图:e392e07f1c354d894842ae15f3c1bca.png

    提示: 'in','not_in','between','not_between'这些标识符支持数组和字符串,字符串可选 ','和'.'作为分隔符。

    就是这样简单可以方便我们的代码变得优雅一些!

    项目地址

    Tip:laravel-query-builderp(https://github.com/zyimm/laravel-query-builder)

    相关推荐:最新的五个Laravel视频教程

    以上就是laravel查询不再需要写大量if else判断了!的详细内容,更多请关注网站无忧资源网其它相关文章!


    网站无忧 » laravel查询不再需要写大量if else判断了!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者
    升级SVIP尊享更多特权立即升级