推荐算法 php SQL,MixPHP 独特的SQL构建方式

独特的SQL构建方式

MixPHP 对CUD这些写操作都有专用方法,可快速构建,使用方法也与 Yii2 完全一至,而R操作完全不一样,MixPHP 发明了一种新奇的构造方式,非常简单的方式,在定义复杂查询时,可使 SQL 动态控制 WHERE、JOIN ,还具有良好的可读性。

一个SQL构建的例子:

一个比较常见的需求: “多条件动态筛选网页或API”

$rows = \Mix::app()->rdb->createCommand([

['SELECT *'],

['FROM `post`'],

[

'INNER JOIN `user` ON `user`.id = `post`.id',

'if' => !is_null($this->name),

],

['WHERE 1 = 1'],

[

'AND `post`.id = :id',

'params' => ['id' => $this->id],

'if' => !is_null($this->id),

],

[

'AND `user`.name = :name',

'params' => ['name' => $this->name],

'if' => !is_null($this->name),

],

['ORDER BY `post`.id ASC'],

['LIMIT :offset, :rows', 'params' => ['offset' => ($this->currentPage - 1) * $this->perPage, 'rows' => $this->perPage]],

])->queryAll();

详细分解:

if 参数为 false 时,该段 SQL 会忽略。

params 内的参数,自动 pdo 绑定参数至当前 SQL 内。

id, name 两个参数都没有时,会显示 post 全部的数据。

name 参数存在时,因为 name 在另一个表,会自动 join。

SQL 内还包含分页、排序。

通常实现一个这样的需求:

在代码内使用 string 拼接 where。

使用查询构造器。

由于动态判断需很多 if ,会导致代码流程很长,可读性降低,如果还要手动做 pdo 参数绑定的话,代码就更混乱了。

MixPHP 这一构建方式,可支持及其复杂的SQL,且可读性良好,你是否要试试?

MixPHP:https://github.com/mixstart/mixphp

高性能 • 极简 • 多功能,

内置 Server 基于 Swoole 的次世代 PHP 框架 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019年人工智能硬件与应用大趋势

2019年即将到来,人工智能将往什么方向发展?机器学习将如何演变为人工智能?在神经网络领域具有20年的技术经验Eugenio Culerciello,在硬件和软件两方面都有经验积累。他预测,在硬件和应用两方面,2019年的人工…

阿里专家杜万:Java响应式编程,一文全面解读

本篇文章来自于2018年12月22日举办的《阿里云栖开发者沙龙—Java技术专场》,杜万专家是该专场第四位演讲的嘉宾,本篇文章是根据杜万专家在《阿里云栖开发者沙龙—Java技术专场》的演讲视频以及PPT整理而成。 摘要:响应式宣言如何解读&#xf…

redis集群原理分析--故障转移

https://blog.csdn.net/hw120219/article/details/95939870

java中的v递归的思想,Java中的递归思想 - osc_9lqilnv7的个人空间 - OSCHINA - 中文开源技术交流社区...

递归:递归的概念:方法自身调用自身则称为递归。递归的分类:间接递归:方法A调用方法B,方法B调用方法C,方法C调用方法A。直接递归: 方法A调用方法A。(常用)递归的注意事项:递归一定要出口&#xf…

日站会——你的站会姿势正确吗?

今天我们讲讲如何利用站会,更好地实现促进团队有效协作和聚焦,促进价值顺畅流动和交付,同时及时的暴露问题和风险。 站会的目标 说到站会,人们最熟悉的Scrum站会,典型的形式是团队围成一圈,依次回答三个问…

springboot2 配置redis报错 redis timeout Value not a valid duration解决办法

配置文件加上时间单位ms就好了, application.yml spring:redis:# Redis数据库索引(默认为0)database: 10# Redis服务器地址host: 192.168.203.220# Redis服务器连接端口port: 6379# Redis服务器连接密码(默认为空)pas…

TableStore实战:DLA+SQL实时分析TableStore

一、实战背景 什么是DLA(DataLake Analytics数据湖)?他是无服务器化(Serverless)的云上交互式查询分析服务。作为分布式交互式分析服务,是表格存储计算生态的重要组成之一。为了使用户更好的了解DLA的功能…

matlab里用fix函数,Matlab基本函数-fix函数

1、fix函数:向零方向取整2、用法说明:yfix(x) 函数将x中元素零方向取整,得到y是一个整数数组。对于复数z,分别对实部和虚部取整3、举例说明>> x [1-2.9i 34.5i 5-6.7i 9-10.2i]x 1.0000 - 2.9000i 3.0000 4.5000i 5.0000 …

权限管理快速入门_01

文章目录一、表结构设计二、权限方法2.1. 根据用户id,查询用户拥有的角色列表2.2. 根据角色id,查询用户拥有的权限列表2.3. 获取用户拥有权限的菜单列表彩蛋: 组装数据成树工具类补充表结构一、表结构设计 一般权限管理由5张表构成(3张主表2张中间表):包…

云栖专辑 | 阿里开发者们的第8个感悟:在信息大爆炸的时代,保持专注度显得尤为可贵

2015年12月20日,云栖社区上线。2018年12月20日,云栖社区3岁。 阿里巴巴常说“晴天修屋顶”。 在我们看来,寒冬中,最值得投资的是学习,是增厚的知识储备。 所以社区特别制作了这个专辑——分享给开发者们20个弥足珍贵的…

php脚本防上多进程同时执行,Jorker

软件简介Jorker — 脚本多进程执行功能脚本多进程执行支持中断续运行内存过载保护定时报告进度高度可配置安装composer require jorker/jorker用法require_once(dirname(__DIR__) . /vendor/autoload.php);$manager new \Jorker\JobForkerManager(3);$manager->allot(funct…

手机秒变IoT设备?——巧妙利用阿里云物联网平台

什么?嵌入五行代码可以实现用户定位,用户在线数量统计,还能和云端消息交互! 没错得益于阿里云物联网套件创建设备免费,消息收费也只有百万消息三块六(先使用后付费,不满不要钱)&…

springboot3.x 集成持久层框架

文章目录一、通用部分1. 通用依赖2. 通用配置 yml二、 springboot3.x 集成通用mapper2.1. pom.xml2.2. yml2.3. mapper接口2.4. 启动类加MapperScan注解2.5. 启动类加ComponentScan注解三、 springboot3.x 集成通用Mybatis3.1. pom.xml3.2. yml3.3. mapper接口3.4. 启动类加Map…

阿里CEO逍遥子:学会“用人做事”,而不是“做事用人”

你们知道的,双11之后,我们做了一件晴天修屋顶的事儿,就是进行组织架构的调整——阿里云升级为阿里云智能;天猫升级为“大天猫”,形成天猫事业群、天猫超市事业群、天猫进出口事业部三大板块;加强技术、智能…

51php 数据不同步,php避免循环查询数据库优化一对多查询

列表查询中一对多查询循环查询优化,mysql循环查询优化描述比如查询学生列表,每一行需要包含该学生的家长列表,一个学生对应多个家长。循环查询方式先查出学生列表,再循环查询对应的家长列表,需要查询N1次但在循环中查询…

Spring Cloud Alibaba发布第二个版本,Spring 发来贺电

还是熟悉的面孔,还是熟悉的味道,不同的是,这次的配方升级了。 今年10月底,Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布:阿里巴巴开源 Spring Cloud Alibaba,并发布了首个预览版本。随后…

JWT操作工具类分享

分享个人操作的JWT的工具类,基于jjwt库,这是Java圈子中最流行的JWT操作库。 文章目录一、应用场景二、实战案例1. jjwt 开源地址2. 加依赖3. 工具类4. 写配置5. 使用三、企业需求一、应用场景 给用户不敏感信息生成token,作为用户登陆的唯一…

服务器zip解压php,服务器端解压缩zip的脚本

html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">文件解压缩管理// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead// of $_FILES.if (isset($_POST…

阿里研究员谷朴:API 设计最佳实践的思考

API是软件系统的核心,而软件系统的复杂度Complexity是大规模软件系统能否成功最重要的因素。但复杂度Complexity并非某一个单独的问题能完全败坏的,而是在系统设计尤其是API设计层面很多很多小的设计考量一点点叠加起来的(也即John Ousterhou…

sonar扫描脚本

vim DynamicStartSonarShell.sh添加内容如下&#xff1a; #!/bin/bash #su - $1 -s /bin/bash /app/CodeQualityScan/$2/sonar-scanner.sh su - $1 <<EOF cd /app/CodeQualityScan/$2/; ./sonar-scanner.sh exit; EOF赋予可执行权限&#xff1a; chmod ux DynamicStartSo…