我有这个雄辩的问题。
$drops = Drop::with('location')->where('date_id', '=', $date_id)
->where('delivered_distance', '>=', 5)
->whereHas('delivery', function($q) use($route_id){
$q->where('route_id', '=', $route_id);
})->get();
哪个产生这个mysql
{ ["query"]=> string(183) "select * from `drops` where `date_id` = ? and `delivered_distance` >= ? and (select count(*) from `deliveries` where `drops`.`delivery_id` = `deliveries`.`id` and `route_id` = ?) >= 1" ["bindings"]=> array(3) { [0]=> string(2) "10" [1]=> int(5) [2]=> string(1) "2" }
现在这不会在我的代码中返回任何内容。如果我将数据放在正确的位置
select * from `drops` where `date_id` = 10 and `delivered_distance` >= 5 and (select count(*) from `deliveries` where `drops`.`delivery_id` = `deliveries`.`id` and `route_id` = 2) >= 1
运行代码我从mysql workbench获得结果。
起初我以为它可能不喜欢$ date_id和$ route_id是字符串所以我尝试输入。
$drops = Drop::with('location')->where('date_id', '=', (int) $date_id)
->where('delivered_distance', '>=', 5)
->whereHas('delivery', function($q) use($route_id){
$q->where('route_id', '=', (int) $route_id);
})->get();
但我仍然从雄辩中得到一个空洞的结果。有什么想法吗?
以下是所有被调用代码的代码。
public function getAlerts($date_id, $route_id)
{
$view = View::make('report.alerts');
$drops = Drop::with('location')->where('date_id', '=', $date_id)
->where('delivered_distance', '>=', 5)
->whereHas('delivery', function($q) use($route_id){
$q->where('route_id', '=', $route_id);
})->get();
$view->with('drops', $drops);
return $view;
}