手寫SQL的蛋疼之處
- SQL很長,一行不好看固棚;
- 多行print出SQL帶\n仙蚜,不好調(diào)試委粉;
- 動態(tài)控制where時贾节,代碼風格就更加詭異;
- 為了安全知牌,還需單獨開很多行做PDO參數(shù)綁定斤程,可讀性不友好;
- 動態(tài)控制where又帶參數(shù)的話袭厂,到處都是if,代碼風格詭異到炸裂帖烘;
再看看我發(fā)明的構建方式
數(shù)組構建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豪華套餐