您现在的位置是:首页> 网站开发> ThinkPHP
ThinkPHP5构造子查询的方法
- 4642人已阅读
- 时间:2018-10-16 08:59:58
- 分类:ThinkPHP
构造子查询有三种方法
1.使用select方法
当select方法的参数为false的时候,表示不进行查询只是返回构建的SQL语句.例如:
$subQuery = Db::table('think_user') ->field('id,name') ->where('id','>',10) ->select(false);
生成的subQuery结果为:
SELECT `id`,`name` FROM `think_user` WHERE `id` > 10
2.使用fetchSql方法
fetchSql方法表示不进行查询而只是返回构建的SQL语句,并且不仅仅支持select,而是支持所有的CURD查询.
$subQuery = Db::table('think_user') ->field('id,name') ->where('id','>',10) ->fetchSql(true) ->select();
生成的subQuery结果为:
SELECT `id`,`name` FROM `think_user` WHERE `id` > 10
3.使用buildSql构造子查询
$subQuery = Db::table('think_user') ->field('id,name') ->where('id','>',10) ->buildSql();
生成的subQuery结果为:
( SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 )
需要注意的是:前面两种在构造子查询的时候需要自己添加括号
然后使用子查询构造新的查询
Db::table($subQuery.' a') ->where('a.name','like','thinkphp') ->order('id','desc') ->select();
最后执行的语句为
SELECT * FROM ( SELECT `id`,`name` FROM `think_user` WHERE `id` > 10 ) a WHERE a.name LIKE 'thinkphp' ORDER BY `id` desc
上一篇:mysql主键和外键那点事