美文网首页MixPHP 碎片学习
发明了一种优雅的手写SQL构建方式

发明了一种优雅的手写SQL构建方式

作者: 撸代码的乡下人 | 来源:发表于2017-08-03 23:18 被阅读215次

手写SQL的蛋疼之处

  • SQL很长,一行不好看;
  • 多行print出SQL带\n,不好调试;
  • 动态控制where时,代码风格就更加诡异;
  • 为了安全,还需单独开很多行做PDO参数绑定,可读性不友好;
  • 动态控制where又带参数的话,到处都是if,代码风格诡异到炸裂;

再看看我发明的构建方式

数组构建SQL

\Mix::$app->rdb->createCommand([
    ["SELECT *"],
    ["FROM `user`"],
    ["INNER JOIN `friend` ON `friend`.uid = `user`.uid", 'where' => $request->get("show_friend") == 1],
    ["INNER JOIN `message` ON `message`.uid = `friend`.uid"],
    ["WHERE uid = :uid", 'values' => ['uid' => $this->uid], 'where' => empty($this->uid)],
    ["AND name = :name", 'values' => ['name' => $this->name]],
]);

逐行构建SQL

\Mix::$app->rdb->queryBuilder(["SELECT *"]);
\Mix::$app->rdb->queryBuilder(["FROM `user`"]);
\Mix::$app->rdb->queryBuilder(["INNER JOIN `friend` ON `friend`.uid = `user`.uid", 'where' => $request->get("show_friend") == 1]);
\Mix::$app->rdb->queryBuilder(["INNER JOIN `message` ON `message`.uid = `friend`.uid"]);
\Mix::$app->rdb->queryBuilder(["WHERE uid = :uid", 'values' => ['uid' => $this->uid]], 'where' => empty($this->uid)]);
\Mix::$app->rdb->queryBuilder(["AND name = :name", 'values' => ['name' => $this->name]]);

该查询构建方式已加入MixPHP豪华套餐

相关文章

网友评论

    本文标题:发明了一种优雅的手写SQL构建方式

    本文链接:https://www.haomeiwen.com/subject/jlpmlxtx.html