laravel查询不再需要写大量if else判断了!
发布时间 - 2021-04-07 00:00:00 点击率:次下面由laravel教程栏目给大家介绍《laravel查询不在需要写大量ifelse判断了,只需要配置一下即可 》,希望对需要的朋友有所帮助!
背景
公司主要业务使用是的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::enableQuer
yLog();
//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视频教程
# laravel
# 只需要
# 是在
# 很难
# 已有
# 而不
# 给大家
# 可选
# 公司主要
# 常常会
# 分隔符
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
深圳网站制作的公司有哪些,dido官方网站?
如何快速搭建高效可靠的建站解决方案?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何为不同团队 ID 动态生成多个非值班状态按钮
网站制作企业,网站的banner和导航栏是指什么?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Android okhttputils现在进度显示实例代码
活动邀请函制作网站有哪些,活动邀请函文案?
Laravel如何处理文件下载请求?(Response示例)
html5的keygen标签为什么废弃_替代方案说明【解答】
如何正确下载安装西数主机建站助手?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Java类加载基本过程详细介绍
高端企业智能建站程序:SEO优化与响应式模板定制开发
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
晋江文学城电脑版官网 晋江文学城网页版直接进入
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
进行网站优化必须要坚持的四大原则
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
如何在景安云服务器上绑定域名并配置虚拟主机?
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
如何在IIS7中新建站点?详细步骤解析
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Laravel如何配置Horizon来管理队列?(安装和使用)
如何在云主机上快速搭建多站点网站?
如何彻底删除建站之星生成的Banner?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel如何为API编写文档_Laravel API文档生成与维护方法
如何快速搭建高效简练网站?
如何快速使用云服务器搭建个人网站?
如何在VPS电脑上快速搭建网站?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何在云虚拟主机上快速搭建个人网站?
js实现获取鼠标当前的位置
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
英语简历制作免费网站推荐,如何将简历翻译成英文?
微信公众帐号开发教程之图文消息全攻略
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
如何用狗爹虚拟主机快速搭建网站?
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
想要更高端的建设网站,这些原则一定要坚持!
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
java ZXing生成二维码及条码实例分享
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
如何在阿里云香港服务器快速搭建网站?
javascript中闭包概念与用法深入理解


yLog();
//model
\App\Models\Log::query()
->where(function ($query) use ($build, $data, $condition){
$build->buildQueryWhere($data ,$condition, $query);
})->get();
dd(DB::getQueryLog());