1.最简单 在查询中使用
UserModel::where(‘id’,’in’,function($query){
$query->name(‘book’)->where(‘date’,’=’,’2025-01-07′)->field(‘user_id’);
})->select()
最简单的子查询 分为 2部分 首先 主查询是查询用户的信息,其信息需要由闭包子查询book表中日起为2025-01-07的用户user_id 注意field后面不需要select,且子查询 目标是用一次SQL 语句去查询 不是分步查询!
2.分布标准实现 buildSql
$bsql=BookModel::where(‘date’,’=’,’2025-01-07′)->field(‘user_id’)->buildSql();
UserModel::where(‘id’,’in’,$bsql)->select();
上面使用buildSql()方法来构造语句,然后加入即可。
3.has实现,在模型中可以用has来直接调用关联的模型(tips:with 可以多级关联 A.B B.C 可以实现A.B.C取值)
模型UserModel中
public function book(){
return $this->hasMany(BookModel::Class,’user_id’,’id’);
}
然后使用:
UserModel::has(‘book’,function($query){
$query->where(‘date’,’=’,’2025-01-07′)
})->select();