2017-03-28 22 views
0

私はエラーが発生しているデータベースから郵便番号を取得しようとしています - Illuminate \ Database \ Grammar :: parameterize()に渡された引数1は配列型の文字列でなければなりません。私の質問のどこが正しいのか分かりません。前もって感謝します。ここでlaravel 5.2

$ countiesList配列は=のように見える[ "Beaverhead"、 "ビッグホーン"、......]モデルで

機能は次のとおりです。コントローラで

public static function counties_zip($countiesList) 
    { 

     $zipCodes= Zip::select('ZIPCode') 
        ->distinct() 
        ->whereIn('CountyName', $countiesList) 
        ->orderBy('ZIPCode', 'asc') 
        ->get(); 
     return $zipCodes; 
    } 

public function zipCodes(Request $request) { 


     $zipCodes = Zip::counties_zip($request->counties); 


     return json_encode($zipCodes); 

    } 

と私のJS:

$(".submit").on("click", function(){ 
     myList = []; 
     $('.select2 option:selected').each(function() { 
      myList.push($(this).val()) 
     }); 
     $countiesList=myList; 


     console.log($countiesList); 
     $.ajax({ 
        type: "get", 
        url: http_host + '/leads/regions/counties/zipcodes?counties=' + $countiesList, 
        data: { counties: $countiesList}, 
        dataType: "json", 
        success: function (data) { 
         var htmlText = ''; 
         for (var i=0;i<data.length;i++) { 
          htmlText += '<div class="div-conatiner">'; 
          htmlText += '<input type="checkbox">' + data[i].ZipCode; 
          htmlText += '<div>'; 
         } 
         $(".main-div").append(htmlText); 
        } 
       }); 
    }); 

答えて

0

javascriptでは、JSON配列に変換するためにJSON.stringifyを使用しました。その後、モデルではjson_decodeを使用してJSON文字列をデコードしました。 JS:

$(".submit").on("click", function(){ 
      myList = []; 
      $('.select2 option:selected').each(function() { 
       myList.push($(this).val()) 
      }); 
      $countiesList=myList; 


      console.log($countiesList); 
      $.ajax({ 
         type: "get", 
         url: http_host + '/leads/regions/counties/zipcodes?counties=' + $countiesList, 
         data: { counties: $countiesList}, 
         dataType: "json", 
         success: function (data) { 
          var htmlText = ''; 
          for (var i=0;i<data.length;i++) { 
           htmlText += '<div class="div-conatiner">'; 
           htmlText += '<input type="checkbox">' + data[i].ZipCode; 
           htmlText += '<div>'; 
          } 
          $(".main-div").append(htmlText); 
         } 
        }); 
     }); 

モデル:

public static function counties_zip($countiesList) 
    { 
     $county= json_decode($countiesList, true); 
     $zipCodes= Zip::select('ZIPCode') 
        ->distinct() 
        ->whereIn('CountyName', $county) 
        ->orderBy('ZIPCode', 'asc') 
        ->get(); 
     return $zipCodes; 
    } 
1

GETリクエストを使用してコントローラに複数のcounties値を渡していますが、リクエストに正しいcounties[]パラメータを使用していないためです。現在、関数内でdd($countiesList);を実行する場合は、配列を渡さないので配列を取得しません。単一の値を渡します。 GETリクエスト内の配列としてパラメータを指定するには

、あなたは何をする必要があるでしょう:

/leads/regions/counties/zipcodes?counties[]=one&counties[]=two... 

あなたに絞り込むしようとしているすべての単一counties値について。

あなたは

data : { 
    counties: $countieList 
} 

が適切$.post(url, data, function(response){ ... });$.ajax(...)リクエスト内の値の配列として扱うべきとして、POST要求として構造にこれを見てみたいことがあります。

+0

はあなたのソリューションのためのあなたにティムをありがとうございます。 JSON配列に変換するためにJSON.stringifyを取得して使用しました。その後、モデルではjson_decodeを使用してJSON文字列をデコードしました。 – dpr

+0

問題ありません。あなたがそれを解決してうれしい。 Btw、あなたの投稿された回答を受け入れることをお気軽に。問題は閉鎖されているとマークされ、同様の問題を有する将来の訪問者が解決策をより迅速に見つけるのに役立つ。乾杯。 –