MixPHP 独特的SQL构建方式
2017-11-01 16:57
169 查看
独特的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 内还包含分页、排序。
通常实现一个这样的需求:
1. 在代码内使用 string 拼接 where。
2. 使用查询构造器。
由于动态判断需很多 if ,会导致代码流程很长,可读性降低,如果还要手动做 pdo 参数绑定的话,代码就更混乱了。
MixPHP 这一构建方式,可支持及其复杂的SQL,且可读性良好,你是否要试试?
MixPHP:https://github.com/mixstart/mixphp
高性能 • 极简 • 多功能,
内置 Server 基于 Swoole 的次世代 PHP 框架 。
相关文章推荐
- 构建可配置PHP应用程序的正确方式
- PHP中拼接sql(insert、update、replace)语句的三种方式
- 用不同文件 构建可配置PHP应用程序的正确方式
- 编译安装LAMP--php模块方式构建LAMP
- 构建可配置PHP应用程序的正确方式 用不同文件
- mybatis 构建SqlSessionFactory的几种方式 以及调用sql映射语句的几种方式
- php利用多叉树(平衡树)的方式构建无限分类
- Docker maven插件方式构建微服务镜像
- PL/SQL快捷方式
- PHP 无限分类三种方式,非函数的递归调用![兄弟连]
- python使用List和类的方式构建树和二叉树
- nginx+apache+mysql+php+squid构建大用户量网站
- sql 查询快捷方式
- firephp 服务器端使用方式
- PHP – EasyUI DataGrid 资料取的方式
- Sqlhelper.ExecuteReader关闭connection的方式
- PHP多种方式获取文件的后缀名
- PHP页面间参数传递的四种方式
- SQL 10 函数 3 日期时间函数 - 2 主流数据库系统中日期时间类型的表示方式