【问题标题】:Laravel raw sql queryLaravel 原始 sql 查询
【发布时间】:2021-07-03 09:39:35
【问题描述】:
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();

这是我的原始 sql 查询,我想将其转换为 laravel sql 查询下面是转换后的 laravel 查询,但是当我运行这两个查询时,我得到不同的结果,谁能帮我看看我的 laravel sql 查询出了什么问题

【问题讨论】:

    标签: php sql laravel rawsql


    【解决方案1】:

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

    ->get()->toArray()

    来自$result 并记录/转储$result-&gt;toSql() 的值。

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

    【讨论】:

    • 选择 CONCAT(app_users.first_name) 作为 display_name,Count(app_leads.id) 作为新的来自 app_users left join app_leads on app_leads.flag = '1' 和 @987654328 @.created_at >= "2019-06-27 00:00:00" 和 app_leads.created_at app_leads.flag = '1' 和 app_leads.owner_user_id = app_users.id 其中app_users.display_name in (?, ?, ?, ?, ?) 和 app_users.deleted_at 是空组by app_users.display_name order by app_users.display_name asc 这是我使用 toSql() 方法时的查询。
    • 我鼓励您使用 SQL 格式化程序(例如 dpriver.com/pp/sqlformat.htm)来比较两个查询并查看差异。我相信你的错误是在第二个->leftJoin,它也应该使用闭包。
    猜你喜欢
    • 2018-04-28
    • 2021-07-27
    • 2019-02-03
    • 2021-12-05
    • 2012-10-29
    • 2018-10-11
    • 2013-09-27
    • 2017-01-05
    • 2015-11-21
    相关资源
    最近更新 更多