博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MixPHP 独特的SQL构建方式
阅读量:7111 次
发布时间:2019-06-28

本文共 1140 字,大约阅读时间需要 3 分钟。

独特的SQL构建方式

对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 参数绑定的话,代码就更混乱了。

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

MixPHP:

高性能 • 极简 • 多功能,
内置 Server 基于 Swoole 的次世代 PHP 框架 。

转载地址:http://mpmhl.baihongyu.com/

你可能感兴趣的文章
LinkedHashMap
查看>>
A lunch in Gordon Market with WWF
查看>>
深蓝词库转换1.9发布——支持英库拼音、搜狗bin格式、FIT、中州韵等
查看>>
Listview首列固定,不能移动到其他列
查看>>
升级TFS2012查看SOURCE-history部分提示TF14045: The identity xxx is not a recognized identity
查看>>
python 可以写 桌面应用程序不?需要依赖 python 么?python 是不是 类似.net framework?...
查看>>
【Web技术学习】PHP学习笔记
查看>>
(转)理解SQLSERVER中的排序规则
查看>>
sizeof和strlen与带汉字字符的
查看>>
TCP 套接字函数
查看>>
安卓Android手机系统内文件夹目录解释
查看>>
IOS UIImage 内存细节
查看>>
使用VS2010 C#开发ActiveX控件
查看>>
js+css实例超漂亮tab切换选项卡代码
查看>>
uva11825Hacker's Crackdown
查看>>
Strange Towers of Hanoi(DP,汉诺塔)
查看>>
Page cache和Buffer cache[转1]
查看>>
设计模式:适配器模式(Adapter Pattern)
查看>>
linux注销、关机、重启
查看>>
一个升级程序
查看>>