登录
首页 >  数据库 >  MySQL

MixPHP 独特的SQL构建方式

来源:SegmentFault

时间:2023-01-18 17:31:10 488浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习数据库相关编程知识。下面本篇文章就来带大家聊聊《MixPHP 独特的SQL构建方式》,介绍一下MySQL、PHP、codeigniter、yii2,希望对大家的知识积累有所帮助,助力实战开发!

独特的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 框架 。

终于介绍完啦!小伙伴们,这篇关于《MixPHP 独特的SQL构建方式》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表