TP5.0 子查询相关错误

cjh| 阅读:1256 发表时间:2018-04-28 12:04:53 linux
Db::table($subQuery.' a')
    ->where('a.name','like','thinkphp')
    ->order('id','desc')
    ->select();

需给子查询增加括号

以下是配置子查询的方法

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();