Hintergrund
Das Hauptgeschäft des Unternehmens wird mithilfe der PHP-Sprache und des Laravel-Frameworks entwickelt. Bei einigen Listenfilterabfragen wird häufig der folgende Code angezeigt, der schwer zu warten ist:
//若干代码 根据参数执行不同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); }]);
Lösung
Wenn diese Abfragen möglich sind konfiguriert Stehen Sie auf und fragen Sie die Daten gemäß der Konfiguration ab, anstatt direkt zu beurteilen, ob sie im Code enthalten sind, damit der Code eleganter wird. Ich entwickle selbst ein Servicepaket Laravel-Query-Builder.
laravel-query-builder ist das Laravel-Framework zum Ausführen des Abfragebedingungs-Builder-Dienstpakets gemäß der vorhandenen Konfiguration.
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());
generiert den SQL-Abfragedatensatz wie unten gezeigt:
Tipps: 'in','not_in','between','not_between'
Diese Bezeichner unterstützen Arrays und Zeichenfolgen, und Zeichenfolgen können optional „,“ und „.“ als Trennzeichen verwenden.
Die neuesten fünf Laravel-Video-Tutorials