手写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豪华套餐
网友评论