求助 原生sql 怎么转换成laravel 框架的写法

SELECT * FROM a
LEFT JOIN (SELECT user_id,count(user_id) from b
GROUP BY user_id) as v1 ON a.user_id= v1.user_id;

阅读 4.6k
4 个回答
AModel::query()
->from('a')
->join(DB::Raw("SELECT user_id,COUNT(user_id) FROM b 
GROUP BY user_id) as v1"),'a.user_id','=','v1.user_id')
->get()
新手上路,请多包涵

仅供参考:
$sub = Abc::where(..)->groupBy(..); // Eloquent Builder instance

$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )

->mergeBindings($sub->getQuery()) // you need to get underlying Query Builder
->count();

$sub = DB::table('b')->select(['user_id'])->selectRaw('max(user_id)')->grouBy('user_id');
$_list = DB::table('a')->leftJoin(DB::raw('({$sub->toSql()}) as v1),'a.user_id','=','v1.user_id)->get()

不行就运行原生的吧
DB::select('SELECT * FROM a LEFT JOIN (SELECT user_id,count(user_id) from b GROUP BY user_id) as v1 ON a.user_id= v1.user_id');

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题