Laravel 5 将MySql查询转换为Laravel

Laravel 5 将MySql查询转换为Laravel,laravel-5,Laravel 5,你能帮我为下面的Mysql查询编写Laravel原始查询吗 SELECT SUM(IF(d.business_email_template_10_open = "Yes", 1,0)) AS `business_email_template_10_open`, SUM(IF(d.business_email_template_11_open = "Yes", 1,0)) AS `business_email_template_11_open` FROM dummy_ema

你能帮我为下面的Mysql查询编写Laravel原始查询吗

SELECT 
    SUM(IF(d.business_email_template_10_open = "Yes", 1,0)) AS `business_email_template_10_open`,
    SUM(IF(d.business_email_template_11_open = "Yes", 1,0)) AS `business_email_template_11_open`
   FROM dummy_email_track d 
       join recommend_email_send_by_cron r on d.user_id = r.user_id
       join user_form_submission u on r.user_id = u.id'
  where d.business_id = $businessId

这应该给你一个开始

确保为where子句提供正确的id。所以在你的情况下,它是这样的:

(where d.business_id = :businessId, ['businessId' => 1])

祝你好运

如果您不能使用存储过程,请忽略我的回答

我认为您不能使用Laravel QueryBuilder是因为某些原因(我也有类似的情况)。使用SP(存储过程)怎么样

Mysql SP

CREATE DEFINER=`your_mysql_id`@`%` PROCEDURE `get_usage_business_email_template`()
__SP:BEGIN
    BEGIN
        SELECT
            SUM(IF(d.business_email_template_10_open = "Yes", 1,0)) AS `business_email_template_10_open`,
            SUM(IF(d.business_email_template_11_open = "Yes", 1,0)) AS `business_email_template_11_open`
        FROM dummy_email_track d 
            join recommend_email_send_by_cron r on d.user_id = r.user_id
            join user_form_submission u on r.user_id = u.id'
        WHERE d.business_id = $businessId
    END;
END
Laravel将这个SP称为如下所示

$result = DB::select('CALL get_usage_business_email_template()');
我希望你能节省时间,因为我的答案…

请尝试以下方法:

$data = DB::table('dummy_email_track as d')
        ->select('d.*','r.*','u.*')
        ->selectRaw('SUM(IF(d.business_email_template_10_open = "Yes", 1,0)) AS business_email_template_10_open')
        ->selectRaw('SUM(IF(d.business_email_template_11_open = "Yes", 1,0)) AS `business_email_template_11_open`')
        ->leftJoin('recommend_email_send_by_cron as r','d.user_id', '=', 'r.user_id')
        ->leftJoin('user_form_submission as u', 'r.user_id', '=', 'u.id')
        ->where('d.business_id','=', $businessId)
        ->get();

到目前为止,你试过的是什么?我投反对票,因为你直接要求解决方案而没有表现出你的努力。嗨,普林斯,我非常了解MySql数据库。但我不经常认识拉威尔。这就是为什么我直接问这个问题。如果我提出了一个查询,并且它运行得很好,这并不意味着我没有尝试过任何东西。谢谢@Jasper。我需要laravel查询不包括Select查询中的所有内容。
$data = DB::table('dummy_email_track as d')
        ->select('d.*','r.*','u.*')
        ->selectRaw('SUM(IF(d.business_email_template_10_open = "Yes", 1,0)) AS business_email_template_10_open')
        ->selectRaw('SUM(IF(d.business_email_template_11_open = "Yes", 1,0)) AS `business_email_template_11_open`')
        ->leftJoin('recommend_email_send_by_cron as r','d.user_id', '=', 'r.user_id')
        ->leftJoin('user_form_submission as u', 'r.user_id', '=', 'u.id')
        ->where('d.business_id','=', $businessId)
        ->get();