laravel查询不再需要写大量if else判断了!
时间:2021-04-22
来源:互联网
今天PHP爱好者给大家带来下面由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
/**
// 目前支持条件操作符
'=',
'<>',
'>',
'>=',
'<',
'<=',
'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());
生成SQL查询记录如下截图:
提示: 'in','not_in','between','not_between'
这些标识符支持数组和字
符串,字符串可选 ','和'.'作为分隔符。
就是这样简单可以方便我们的代码变得优雅一些!
项目地址
Tip:laravel-query-builderp(https://github.com/zyimm/laravel-query-builder)
以上就是laravel查询不再需要写大量if else判断了!的详细内容,更多请关注php爱好者其它相关文章!
-
Navigator.userAgent属性详解 时间:2025-07-29
-
HashMap底层实现原理和扩容机制 时间:2025-07-29
-
什么是git命令?git常用基本命令使用详细大全 时间:2025-07-29
-
git clone命令详解(参数、原理、示例、常见问题、注意事项) 时间:2025-07-29
-
Linux tail命令详解(定义、作用、用法) 时间:2025-07-29
-
Python中strip()函数和split()函数用法和区别 时间:2025-07-29
今日更新
-
Linea 即将 TGE,Etherex 能否打响 Linea 发币前的第一枪?
阅读:18
-
解读香港稳定币申请指引:预计明年初发放首批牌照,持有人需完成身分认证
阅读:18
-
以太坊因19亿美元资金流入及ETF乐观情绪飙升,贝莱德和SharpLink双双加码
阅读:18
-
黄金、比特币和宝可梦卡,谁才是这个时代的「完美抵押品」?
阅读:18
-
Solana 僅剩表面繁榮?當代幣上漲僅靠幕後操縱,鏈上週期或已走向盡頭
阅读:18
-
LINEA代币经济学:ETH Gas占85%,生态系统占15%,资金库占15%
阅读:18
-
香港《穩定幣條例》8/1生效、港股爆衝遭金管局警告:小心泡沫化
阅读:18
-
雷·达里奥建议配置15%的比特币或黄金以应对即将到来的局势。
阅读:18
-
ZachXBT调查导致推特黑客被定罪
阅读:18
-
7月31日XRP价格预测
阅读:18