2017-09-08 14 views
0

これはLaravel 4.2およびyajra/laravel-のDataTable - オラクルで起こる「:」〜3.0 "検索やソートが機能しない - のDataTableとLaravel 4.2

表がレンダリングされ、すでにページングされているが、順序フィルタが動作しないフィルタが適用されていなかったかのように実際には、それは常に、同じ情報を返すあり、既存のを考慮して、すべての作業を行うために必要な何かが

マイコントローラー加入:。。?を

public function api() { 
    $params = Input::all(); 
    $warehouse =  $this->warehouse->getDefaultByTenant(current_tenant()); 
    $items = $this->inventory->dataTables($warehouse, $params); 
    return $items; 
} 

私のリポジトリ:

public function dataTables(Warehouse $warehouse, $params) { 

    $a = DB::table('inventories') 
    ->join('variants', 'inventories.variant_id', '=', 'variants.id') 
    ->join('tenant_variants', 'inventories.variant_id', '=', 'tenant_variants.id') 
    ->join('products', 'variants.product_id', '=', 'products.id') 
    ->join('variant_translations', 'variant_translations.variant_id', '=', 'variants.id', 'left outer') 
    ->join('product_translations', 'product_translations.product_id', '=', 'products.id') 
    ->where('inventories.warehouse_id', $warehouse->id) 
    ->where('product_translations.locale', $warehouse->getTenantLocale()) 
    ->whereNull('variants.deleted_at')->orderBy('product_translations.name'); 

    if (isset($params['search[value]']) && ($k = $params['search[value]'])) { 
     $query = $query 
     ->where(function ($subquery) use ($k) { 
      return $subquery 
      ->where('product_translations.name', 'like', "%%{$k}%%") 
      ->orWhere('variants.sku', 'like', "%%{$k}%%") 
      ->orWhere('variant_translations.name', 'like', "%%{$k}%%"); 
     }); 
    } 

    return Datatables::of($a)->addColumn('actions', 'action here')->make(true); 
} 

私のJS

$('.table-inventory').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": {url: "route_to_api", dataSrc: "data"}, 
     columns: [ 
      { data: 'sku' }, 
      { data: 'name' }, 
      { data: 'position' }, 
      { data: 'count_on_hand' }, 
      { data: 'count_on_hand' }, 
      { data: 'critical_stock_level' }, 
      { data: 'retail_price' }, 
      { data: 'wholesale_price' }, 
      { data: 'qty1_threshold' }, 
      { data: 'qty2_threshold' }, 
      { data: 'permalink_classico' }, 
      { data: 'ml_classico_price' }, 
      { data: 'id_ml_premium' }, 
      { data: 'ml_premium_price' }, 
     ] 
    }); 

答えて

0

私は手動でそれをやった、フィルタを解決することができたが、今私は順序を解決する必要があります。

if ($k = $params['search']['value']) { 
     $a = $a 
     ->where(function ($subquery) use ($k) { 
      return $subquery 
      ->where('product_translations.name', 'like', "%%{$k}%%") 
      ->orWhere('variants.sku', 'like', "%%{$k}%%") 
      ->orWhere('inventories.position', 'like', "%%{$k}%%") 
      ->orWhere('variant_translations.name', 'like', "%%{$k}%%"); 
     }); 
    } 
関連する問題