Mongodb 修复Lumen中的Mongo查询

Mongodb 修复Lumen中的Mongo查询,mongodb,laravel,lumen,jenssegers-mongodb,Mongodb,Laravel,Lumen,Jenssegers Mongodb,我在内腔里有个问题。但它不起作用。查询是: return Order::whereBetween('source_longitude', [$minLon_try_one, $maxLon_try_one]) ->whereBetween('source_latitude',[51.365807806703,51.454384193297]) ->where('status','=','pending') ->where('cre

我在内腔里有个问题。但它不起作用。查询是:

return Order::whereBetween('source_longitude', [$minLon_try_one, $maxLon_try_one])
        ->whereBetween('source_latitude',[51.365807806703,51.454384193297])
        ->where('status','=','pending')
        ->where('created_at','<=', 2016-04-07 12:00:35)
        ->where('created_at','>=', 2016-04-07 11:55:35)
        ->orWhere(function($query)
        {
                    $query->whereBetween('source_longitude', [51.321519613407, 51.498672386593])
                    ->whereBetween('source_latitude',[35.612195271526,35.756086728473])
                    ->where('status','=','pending')
                    ->where('created_at','<=',2016-04-07 11:55:35)
                    ->where('created_at','>=',2016-04-07 11:50:35);
        }
        )->get();
返回顺序::whereBetween('source_longide',[$minLon_try_one,$maxLon_try_one])
->其中(‘震源纬度’,[51.365807806703,51.454384193297])
->其中('status','=','pending')
->其中('created_at','=',2016-04-07 11:55:35)
->orWhere(函数($query)
{
$query->whereBetween('来源经度',[51.321519613407,51.498672386593])
->其中(‘震源纬度’,[35.612195271526,35.75608672473])
->其中('status','=','pending')
->其中('created_at','=',2016-04-07 11:50:35);
}
)->get();

但是当我从查询中删除
或where
函数时,我得到了预期的结果

您使用的
或where
可能有点错误。您需要将where放到另一个where以正确执行查询。你现在做的是这样的
,其中a是1,b是2或者(c是3,d是4)
,但是我相信,你想做这样的
,其中(a是1,b是2)或者(c是3,d是4)

试试这个:

    return Order::where(function ($query) {
        $query->whereBetween('source_longitude', [$minLon_try_one, $maxLon_try_one])
            ->whereBetween('source_latitude', [51.365807806703, 51.454384193297])
            ->where('status', '=', 'pending')
            ->where('created_at', '<=', '2016-04-07 12:00:35')
            ->where('created_at', '>=', '2016-04-07 11:55:35');
    })->orWhere(function ($query) {
        $query->whereBetween('source_longitude', [51.321519613407, 51.498672386593])
            ->whereBetween('source_latitude', [35.612195271526, 35.756086728473])
            ->where('status', '=', 'pending')
            ->where('created_at', '<=', '2016-04-07 11:55:35')
            ->where('created_at', '>=', '2016-04-07 11:50:35');
    })->get();
returnorder::where(函数($query){
$query->whereBetween('source\u longitude',[$minLon\u try\u one,$maxLon\u try\u one])
->其中(‘震源纬度’,[51.365807806703,51.454384193297])
->其中('status'、'='、'pending')
->其中('created_at','=','2016-04-07 11:55:35');
})->orWhere(函数($query){
$query->whereBetween('来源经度',[51.321519613407,51.498672386593])
->其中(‘震源纬度’,[35.612195271526,35.75608672473])
->其中('status'、'='、'pending')
->其中('created_at','=','2016-04-07 11:50:35');
})->get();

谢谢。对不起,我有一个问题,当每个订单在过去20分钟内创建时,如何更新状态字段