求助 原生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.7k
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');

推荐问题