2017-12-10 2 views
0

私は、ユーザーが異なる選択ドロップダウンで2つの企業を選択し、それらを並べて比較することを可能にする会社比較Webアプリケーションを持っています。順序を除いてすべてが今のところうまく機能しています。私は、比較の結果が、デフォルトのLaravel created_byフィールドではなく、最初に照会されたアイテムに基づいていることを望みます。以下は、クエリビルダのために私のコードです: The result I get最初の条件結果に基づいてLaravelクエリビルダを注文する方法

public function compareCompanies(Request $request) { 
    if ($request->has('companies') && $request->companies != null) { 
     $companies = array_filter($request->companies); 

     $brands = Brand::with('categories') 
     ->whereIn('brands.slug', $companies) 
     ->get(); 
     return response()->json(['success' => true, 'brands' => $brands]);   
    } 
} 

以下は下の画像を示すように、私が得る結果はPOSTリクエスト

$.ajax({ 
     type: "POST", 
     url : url, 
     data: $("#compareForm").serialize(), 
     dataType : 'json', 
     success : function(response) { 

      if(response.success) 
      { 
       $("div#divLoading").removeClass('show'); 
       $.each(response.brands, function(i, brand){ 
        var NewRow = ''; 
        NewRow += '<table class="table"><thead><tr>'; 
        NewRow += '<th>' + brand.brand + '</th>'; 
        NewRow += '</tr></thead><tbody>'; 
        NewRow += '<tr><td>'+brand.growth_score+'</td></tr>'; 
        NewRow += '<tr><td>'+brand.mind_share +'</td></tr>'; 
        NewRow += '<tr><td>'+brand.headquarters+'</td></tr>'; 
        NewRow += '<tr><td>'+brand.revenue+'</td></tr>'; 
        NewRow += '<tr><td>'+brand.no_of_employees+'</td></tr>'; 
        NewRow += '</tbody></table></div>'; 
        $("#companies").append(NewRow); 
       }) 
      } 
     }, 
     error: function (data) { 
      console.log('An error occurred.'); 
      console.log(data); 
     } 
    }); 

の応答を表示するための私のAjaxです

ご覧のとおり、Laravelはcreated_atの値を使用して注文するため、結果は入れ替えられます。どのようにして結果を入力順に並べることができますか?

答えて

0

雄弁はあなたがそうのようなORDERBYメソッドを使用するときに、列を指定することで、クエリの結果を注文することができます:

$brands = Brand::with('categories') 
    ->whereIn('brands.slug', $companies) 
    ->orderBy('column_name') 
    ->get(); 

あなたはあなたの要求に列名を提出した場合ので、あなたはその後、動的にどの列に変更することができますデータは次のようにソートする必要があります。

$brands = Brand::with('categories') 
    ->whereIn('brands.slug', $companies) 
    ->orderBy($request->column_name) 
    ->get(); 
関連する問題