首页 > 解决方案 > Laravel raw sql query

问题描述

select CONCAT(app_users.first_name) as display_name,COUNT(NewLeads.id)
from `app_users`
LEFT JOIN (SELECT app_leads.id, app_leads.owner_user_id from app_leads JOIN app_lead_version ON app_leads.id=app_lead_version.lead_id WHERE `app_leads`.`flag` = '1' and `app_leads`.`created_at` >= "2021-06-27 00:00:00" and `app_leads`.`created_at` <= "2021-06-28 23:59:59" ) as NewLeads ON NewLeads.owner_user_id=app_users.id
where `app_users`.`display_name` in ('Sam', 'Ash', 'Dan', 'Paul Thengilan', 'Scott')
group by `app_users`.`display_name`
order by `app_users`.`display_name` asc



$result = User::select(DB::raw('CONCAT(app_users.first_name) as display_name'),DB::raw('Count(app_leads.id) as new'))
            ->leftjoin('leads',function($join)use($time){
                $join->leftjoin('lead_version','lead_version.lead_id','=','leads.id');
                $join->on('leads.flag','=',DB::raw("'1'"));
                $join->on('leads.created_at','>=',DB::raw('"'.date("Y-m-d",strtotime($time)).' 00:00:00"'));
                $join->on('leads.created_at','<=',DB::raw('"'.date("Y-m-d",strtotime($time)).' 23:59:59"'));
                $join->on('leads.flag','=',DB::raw("'1'"));
                $join->on('leads.owner_user_id','=','users.id');

            })->whereIn('users.display_name',$user_display)->groupBy('users.display_name')->orderBy('users.display_name')->get()->toArray();

This is my raw sql query and i want to convert it into laravel sql query below is the converted laravel query but when i run both the query i get different result can anyone help me out that what is wrong with my laravel sql query

标签: phpsqllaravelrawsql

解决方案


调试这种情况的一种方法是删除

->get()->toArray()

$result并记录/转储$result->toSql().

如果您可以将该输出添加到问题中,它可能更容易为您提供帮助。


推荐阅读