首頁  >  文章  >  php框架  >  laravel查詢不再需要寫大量if else判斷了!

laravel查詢不再需要寫大量if else判斷了!

藏色散人
藏色散人轉載
2021-04-07 14:56:582450瀏覽

下面由laravel教學專欄給大家介紹《laravel查詢不在需要寫大量ifelse判斷了,只需要配置一下即可 》,希望對需要的朋友有所幫助!

laravel查詢不再需要寫大量if else判斷了!

背景

公司主要業務使用是的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

/**
// 目前支持条件操作符
    '=',
    '',
    '>',
    '>=',
    ' 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查詢記錄如下截圖:
laravel查詢不再需要寫大量if else判斷了!

#提示:  
'in','not_in','between' ,'not_between'這些識別碼支援數組和字
符號字串,字串可選','和'.'作為分隔符號。

就是這樣簡單可以方便我們的程式碼變得優雅一些!

專案地址

Tip:laravel-query-builderp(https://github.com/zyimm/laravel-query-builder)
#相關建議:最新的五個Laravel影片教學

以上是laravel查詢不再需要寫大量if else判斷了!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除