如果控制器在没有 ->take() 的情况下查询数据库,则 Ajax 调用返回 500;其他明智 200



我已经为客户端编写了一个Google Map Page,其中包括从头开始写的绘制搜索功能,例如在draw polygon中以返回多边形的位置。

在Localhost上一切正常。

完成多边形后(将最终段拖到原始起点)AJAX调用一个函数,该功能搜索数据库,该数据库具有与普通非polygon搜索中使用的相同的DB查询。但是,如果没有包含a-> take()参数,我无法使大坝的工作能够工作。这对我来说毫无意义。

控制器 - 我已经取出了一些不必要的代码部分,以使其更易于阅读,但您可以看到它是常规的旧数据库查询。如果我在此处替换 ->订单 -> take(一些小于或等于总数),则可以正常工作。

$searchResults = DB::table('properties')
->leftJoin('propImages', 'properties.L_ListingID', '=', 'propImages.L_ListingID')
->where($propertiesArray)
->whereIn('LM_Char10_1', $waterArray)
->whereIn('L_Class', $propTypes)
->when($residential==1, function($query) use ($bed, $bath) {// when residental is true, get beds/bath criteria return
    $query->where([['L_Keyword3', '>=', $bed],['LM_Int1_1', '>=', $bath]]);  
}); 
$sr = $searchResults->orderBy('L_AskingPrice', 'asc')->get();

查看

google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
                        console.log('polygon complete');
                        $('#overMapLoadIcon').css('display', 'inline');
                        //Hide drawl button
                        $('#deletePoly').css('display', 'inline');
                        $('#updatePolySearch').css('display', 'inline');
                        drawingManager.setOptions({
                          drawingControl: false
                        });
                        //Set draw mode to hand
                        drawingManager.set('drawingMode');
                        polyPoints = [];// create an arry of all the point's GPS coords in the polygon by looping through them
                          for (var i = 0; i < polygon.getPath().getLength(); i++) {//For Each Polygon point
                              var poylygonCoord = polygon.getPath().getAt(i).toUrlValue(6);
                              var coords = poylygonCoord.split(",");
                              var lat = coords[0];
                              var lng = coords[1];
                              polyPoints.push([lat,lng]);
                              //console.log(lat+'    '+lng);
                          }
                          // with array of pollygon points coordinates, send to controller with search criteria
                          var waterType = $('#typeOfWaterfront').val();
                          var priceSlider = $('#priceSlider').val();
                          var footageSlider = $('#footageSlider').val();
                          var beds = $("body").find("[aria-selected=true]").parent().attr("data-original-index");
                          var baths = $("body").find("[aria-selected=true]").parents().attr("data-original-index");
                          var residential = $('[name*="residential"]:checkbox:checked').length > 0;
                          var vacantland = $('[name*="vacantland"]:checkbox:checked').length > 0;
                          var commercial = $('[name*="commercial"]:checkbox:checked').length > 0;
                          var condos = $('[name*="condos"]:checkbox:checked').length > 0;
                          //$("body").find("[aria-selected=true]").parents().attr("data-original-index");
                          var polyPointsString = JSON.stringify(polyPoints);
                          var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
                          $.ajax({
                              url: '<?php echo URL::to("/searchByPoly/") ?>',
                              type: 'POST',
                              data: {_token: CSRF_TOKEN, polyPoints: polyPointsString,
                               waterFrontType: waterType,
                               price: priceSlider,
                               footage: footageSlider,
                               bed: beds,
                               bath: baths,
                               res: residential,
                               vacant: vacantland,
                               comm: commercial,
                               condo: condos },
                              success: function (data) {
                                jsonProps = JSON.parse(data);
                                $('#overMapLoadIcon').css('display', 'none');
                                removeAllMarkers();
                                markers=[];
                                for (var i = 0; i < jsonProps.length; i++) {
                                  //L_DisplayId
                                  placeMarkerFromPoly(jsonProps[i]);  
                                }
                              }
                          });

这不是一个令牌问题,因为我仍然可以让Ajax工作。我被塞满了。任何帮助将不胜感激。

----- 更新 ----

网络响应是500。我以预览的形式没有任何回报。没有Laravel错误消息

我的日志文件。

我应该像这样连接底部几行吗?:

#73 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(699): IlluminateRoutingRouter->runRouteWithinStack(Object(IlluminateRoutingRoute), Object(IlluminateHttpRequest))
#74 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Routing/Router.php(675): IlluminateRoutingRouter->dispatchToRoute(Object(IlluminateHttpRequest))
#75 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(246): IlluminateRoutingRouter->dispatch(Object(IlluminateHttpRequest))
#76 [internal function]: IlluminateFoundationHttpKernel->IlluminateFoundationHttp{closure}(Object(IlluminateHttpRequest))
#77 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(IlluminateHttpRequest))
#78 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(44): IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
#79 [internal function]: IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode->handle(Object(IlluminateHttpRequest), Object(Closure))
#80 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(136): call_user_func_array(Array, Array)
#81 [internal function]: IlluminatePipelinePipeline->IlluminatePipeline{closure}(Object(IlluminateHttpRequest))
#82 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(IlluminateHttpRequest))
#83 [internal function]: IlluminateRoutingPipeline->IlluminateRouting{closure}(Object(IlluminateHttpRequest))
#84 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(IlluminateHttpRequest))
#85 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(132): IlluminatePipelinePipeline->then(Object(Closure))
#86 /var/www/upnorthproperties.net/public_html/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(99): IlluminateFoundationHttpKernel->sendRequestThroughRouter(Object(IlluminateHttpRequest))
#87 /var/www/upnorthproperties.net/public_html/laravel/public/index.php(54): IlluminateFoundationHttpKernel->handle(Object(IlluminateHttpRequest))
#88 {main}  

patricus,你是正确的。我一直在测试它,看来我的数字海洋档案无法处理这么多回报。我本质上是在返回大约12,000个属性中的大多数,然后浏览每个属性,看看它是否在多边形内。

我将通过切换到多边形检查的JavaScript前端解决方案来修复它现在它有效。

没有您的评论,我不会提出该解决方案。谢谢Patricus

最新更新