[英]sql query to laravel query with union
我想将下面的联合查询转换为 laravel 查询
DB::select("select lead_master.lead_stage from lead_master inner join user_master on
user_master.user_name=lead_master.assigned_user_name where region in (".$geo_string.") and teams
in (".$filter_teams_string.") group by (lead_stage) union
select meeting_hash from meetings_master where assigned_user_name in
(".$filter_username_string.") and meeting_hash in ('follow_up','first_time') group by
(meeting_hash)
union
select sales_stage from opportunity_master where sales_stage in ('Identified','QO_to be
approved') and assigned_user in (".$filter_username_string.") group by (sales_stage)");
以下查询在 postgre 中运行良好
在此开始之前,我假设您了解laravel Eloquent
假设您的lead_master
表是LeadMaster
Model ,也是MeetingsMaster
和OpportunityMaster
$lead_master = LeadMaster::select("lead_master.lead_stage as stage")
->join('user_master','user_master.user_name','=','lead_master.assigned_user_name')
->whereIn('region',$geo) //$geo is an array
->whereIn('teams',$filter_username) //also an array
->groupBy('lead_stage');
$meetings_master = MeetingsMaster::select('meeting_hash as stage')
->whereIn('assigned_user_name',$filter_username)
->whereIn('meeting_hash',['follow_up','first_time'])
->groupBy('meeting_hash');
$opportunity_master = OpportunityMaster::select('sales_stage as stage')
->whereIn('sales_stage',['Identified','QO_to be approved'])
->whereIn('assigned_user',filter_username)
->groupBy('sales_stage');
$query = $lead_master->union($meetings_master)->union($opportunity_master)->pluck('stage'); //your result
dd($query);
这就是您使用Laravel Eloquent时的样子
ps:你不需要为此做3个变量,我只是用它来方便维护
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.