ホームページ  >  記事  >  PHPフレームワーク  >  Laravel クエリでは、if else 判定を大量に記述する必要がなくなりました。

Laravel クエリでは、if else 判定を大量に記述する必要がなくなりました。

藏色散人
藏色散人転載
2021-04-07 14:56:582368ブラウズ

laravel の次のチュートリアルコラムでは、「Laravel クエリは多くの ifelse 判定を書く必要がなくなり、設定するだけで済みます」を紹介します。それを必要としている友達。

Laravel クエリでは、if else 判定を大量に記述する必要がなくなりました。

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);
        }]);
Solution

これらのクエリを構成でき、コード内の if によって直接判断するのではなく、構成に従ってデータがクエリされる場合、コードはよりエレガントになります。私は自分でサービスパッケージlaravel-query-builderを開発しています。

laravel-query-builder は、既存の構成に基づいてクエリ条件ビルダー サービス パッケージを実行する laravel フレームワークです
インストール

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'これらの識別子は配列と文字列をサポートします。文字列には区切り文字としてオプションの「,」と「.」があります。
非常にシンプルなので、コードをよりエレガントにすることができます。

プロジェクトアドレス

ヒント: laravel-query-builderp(https://github.com/zyimm/laravel-query-builder)

関連する推奨事項:
最新の 5 つの Laravel ビデオ チュートリアル

以上がLaravel クエリでは、if else 判定を大量に記述する必要がなくなりました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。