ThinkPHP3.0完全开发手册
新版新增了子查询支持,有两种使用方式:
使用子查询的时候 select方法的参数必须为false,例如:
// 首先构造子查询SQL
$subQuery = $model->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->select(false);
或者使用buildSql方法
$subQuery = $model->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->buildSql();
调用buildSql方法后不会进行实际的查询操作,而只是生成该次查询的SQL语句(为了避免混淆,会在SQL两边加上括号),然后我们直接在后续的查询中直接调用。
// 利用子查询进行查询
$model->table($subQuery.' a')->where()->order()->select()
构造的子查询SQL可用于TP的连贯操作方法,例如table where等。