【发布时间】:2015-06-05 16:11:40
【问题描述】:
我有以下疑问:
return Calls::select(DB::raw("ph_n.`desc`, ph_s.StageName, Calls.PatID, Calls.CallTime, Calls.ApptDate, Calls.Name, ph.Response, Calls.Physician, r.StatusDesc, ph_s.DaysToNextStage, ph_e.ph_eventid, ph_e.EventName"))
->join('PopHealth as ph', function($join){
$join->on('Calls.PatID', '=', 'ph.PatID');
$join->on('Calls.Login', '=', 'ph.Login');
})
->join('Response as r', 'ph.Response', '=', 'r.RespID')
->join('PopHealth_stages as ph_s', 'ph.ph_eventid', '=', 'ph_s.ph_eventid')
->join('PopHealth_events as ph_e', 'ph.Login', '=', 'ph_e.Login')
->join('PopHealth_notify as ph_n', function($join){
$join->on('r.status', '<=', 'ph_n.RangeUpper');
$join->on('r.status', '>=', 'ph_n.RangeLower');
})
->where('Calls.Login', 'demo')
->distinct()->take(100)
->paginate(10);
它返回了 400 多个页面,并且很多页面都是空的。网上没有出现这个问题。有线索吗?
编辑:
dd(DB::getQueryLog());吐出以下SQL:
array(4) { [0]=> array(3) { ["query"]=> string(70) "select * from `PopHealth_events` where `Login` = ? and `IsDeleted` = ?" ["bindings"]=> array(2) { [0]=> string(4) "demo" [1]=> string(1) "0" } ["time"]=> float(196.17) } [1]=> array(3) { ["query"]=> string(103) "select distinct `ph_eventid`, `EventName` from `PopHealth_events` where `Login` = ? and `IsDeleted` = ?" ["bindings"]=> array(2) { [0]=> string(4) "demo" [1]=> string(1) "0" } ["time"]=> float(217.22) } [2]=> array(3) { ["query"]=> string(505) "select count(*) as aggregate from `Calls` inner join `PopHealth` as `ph` on `Calls`.`PatID` = `ph`.`PatID` and `Calls`.`Login` = `ph`.`Login` inner join `Response` as `r` on `ph`.`Response` = `r`.`RespID` inner join `PopHealth_stages` as `ph_s` on `ph`.`ph_eventid` = `ph_s`.`ph_eventid` inner join `PopHealth_events` as `ph_e` on `ph`.`Login` = `ph_e`.`Login` inner join `PopHealth_notify` as `ph_n` on `r`.`status` <= `ph_n`.`RangeUpper` and `r`.`status` >= `ph_n`.`RangeLower` where `Calls`.`Login` = ?" ["bindings"]=> array(1) { [0]=> string(4) "demo" } ["time"]=> float(192.68) } [3]=> array(3) { ["query"]=> string(694) "select distinct ph_n.`desc`, ph_s.StageName, Calls.PatID, Calls.CallTime, Calls.ApptDate, Calls.Name, ph.Response, Calls.Physician, r.StatusDesc, ph_s.DaysToNextStage, ph_e.ph_eventid, ph_e.EventName from `Calls` inner join `PopHealth` as `ph` on `Calls`.`PatID` = `ph`.`PatID` and `Calls`.`Login` = `ph`.`Login` inner join `Response` as `r` on `ph`.`Response` = `r`.`RespID` inner join `PopHealth_stages` as `ph_s` on `ph`.`ph_eventid` = `ph_s`.`ph_eventid` inner join `PopHealth_events` as `ph_e` on `ph`.`Login` = `ph_e`.`Login` inner join `PopHealth_notify` as `ph_n` on `r`.`status` <= `ph_n`.`RangeUpper` and `r`.`status` >= `ph_n`.`RangeLower` where `Calls`.`Login` = ? limit 10 offset 0" ["bindings"]=> array(1) { [0]=> string(4) "demo" } ["time"]=> float(198.18) } }
SQL 限制了结果。
【问题讨论】: