search

Home  >  Q&A  >  body text

Tips to write this sentence in an elegant way

I have two tables Parameters and Share_Details. I have my raw SQL query here and I want to write it in pure Eloquent way. please help.

$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");

P粉025632437P粉025632437433 days ago626

reply all(1)I'll reply

  • P粉459440991

    P粉4594409912023-09-08 17:19:47

    Try something like this:

    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();

    reply
    0
  • Cancelreply