我有两个表Parameters和Share_Details。我在这里有我的原始SQL查询,我想以纯粹的Eloquent方式编写它。请帮忙。
$shareDetails=DB::select
("SELECT s.id,
share_type,
para_int_1,
para_int_2,
price,
para_name
FROM share_details as s,parameters
where para_type='share'
and para_id=share_type
and startDate=(select max(startdate)
from share_details
where share_type=s.share_type)
group by share_type,
s.id,
para_int_1,
para_int_2,
price,
para_name"); Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号
尝试像这样:
DB::table('share_details') ->crossJoin('parameters' ->select('share_details.id', 'share_type', 'para_int_1', 'para_int_2', 'price', 'para_name') ->where('para_type','=','share') ->where('para_id','=',DB::raw('share_type')) ->where('startDate','=',function($query) { $query->from('share_details') ->select(DB::raw("'max'(startdate)) ->where('share_type','=',DB::raw('s.share_type')); }) ->groupBy('share_type','share_details.id','para_int_1','para_int_2','price','para_name') ->get();