美文网首页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