Laravel 5 将MySql查询转换为Laravel
你能帮我为下面的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
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();