Contexte
L'activité principale de l'entreprise est développée à l'aide du langage PHP et du framework laravel Lors de certaines requêtes de filtrage de liste, le code suivant, difficile à maintenir, apparaît souvent :
//若干代码 根据参数执行不同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
Si ces requêtes peuvent être configurées et que les données sont interrogées en fonction de la configuration au lieu de juger directement si elles sont dans le code, le code sera plus élégant. Je développe moi-même un package de services laravel-query-builder.
laravel-query-builder est le framework Laravel permettant d'exécuter le package de services de création de conditions de requête basé sur la configuration existante
Installer
composer require zyimm/laravelquery-builder
Require
{ "require": { "php": ">=7.0", "fideloper/proxy": "^4.0", "laravel/framework": ">=5.5" } }
Utilisation
/** // 目前支持条件操作符 '=', '', '>', '>=', ' 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());
génère des enregistrements de requête SQL comme indiqué ci-dessous :
Conseils : 'in','not_in','between','not_between'
Ces identifiants prennent en charge les tableaux et les caractères
Chaîne, chaîne facultative ',' et '.' comme délimiteurs.
C’est tellement simple que cela peut rendre notre code plus élégant !
Adresse du projet
Astuce : laravel-query-builderp(https://github.com/zyimm/laravel-query-builder)
Recommandations associées : Les cinq derniers didacticiels vidéo Laravel