91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel查詢不再需要寫大量if else判斷的示例分析

發布時間:2021-04-09 11:08:57 來源:億速云 閱讀:218 作者:小新 欄目:編程語言

這篇文章主要介紹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

/**
// 目前支持條件操作符
    '=',
    '<>',
    '>',
    '>=',
    '<',
    '<=',
    '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());

提示:  
'in','not_in','between','not_between'這些標識符支持數組和字
符串,字符串可選 ','和'.'作為分隔符。

以上是“laravel查詢不再需要寫大量if else判斷的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平塘县| 武川县| 久治县| 扬中市| 桑植县| 金溪县| 博客| 修水县| 湟源县| 宜章县| 疏附县| 浮梁县| 贵州省| 新和县| 建昌县| 靖江市| 望奎县| 明水县| 台山市| 南丹县| 全南县| 莱西市| 泰兴市| 杨浦区| 新晃| 昭觉县| 抚州市| 灵寿县| 萨迦县| 大冶市| 屏边| 古浪县| 乐安县| 汽车| 饶平县| 六安市| 河津市| 驻马店市| 绥棱县| 武冈市| 金川县|