2017-01-20 10 views
2

私はデータベースに73kレコードのテーブルを持っています。 したがって、Datatablesを使用して、1つのテーブルだけを表示したいとします。Laravel 5.3のDatatablesサーバー側を使用した後のデータの処理


これは、テーブルがあるべきである。 Datatables in client side

私はすでにのDataTableを持つテーブルを持っていますが、それは限られたアイテムです。 最初の列がデータベースにありません 「イメージを表示」列は特別な機能です。マネージャがこのテキストを表示すると、画像が表示されます 外観を変更してすべてのデータをロードするには、サーバー側でdatatableを使用します。 だから私は、コントローラを作る:

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use Yajra\Datatables\Datatables; 
use App\Models\GS1; 
class DataTablesController extends Controller 
{ 
    private $sa24Repository; 

// function __construct(SA24Repository $sa24Repository) 
// { 
//  $this->sa24Repository = $sa24Repository; 
// } 
    public function getIndex() {; 
     return Datatables::of(Product::query())->make(true); 
    } 
} 
?> 

単純なビューで: Products table それはうまく動作しますが、私は、検索入力に入力すると、それはすべての列を検索します。私はブラウザはログインして検索する場合

columns: [ 
    {data: 'gtin'}, 
    {data: 'brand_name'}, 
    {data: 'description_short'} 
] 

:私はこのコードを削除した場合

<script> 
    $('.testTable').dataTable(); 
    $.fn.dataTable.ext.errMode = 'throw'; 
    $('.testTable').dataTable({ 
     destroy: true, 
     processing: true, 
     serverSide: true, 
     ajax: '/datatables', 
     columns: [ 
      {data: 'gtin'}, 
      {data: 'brand_name'}, 
      {data: 'description_short'} 
     ] 
    }); 
</script> 

: そして私は、フィルタを使用して、このコードを追加する必要が

Uncaught Error: DataTables warning: table id=DataTables_Table_0 - Requested unknown parameter '0' for row 0, column 0. For more information about this error, please see http://datatables.net/tn/4 
    at Ae (all.js?v=1484881746:6) 
    at k (all.js?v=1484881746:5) 
    at j (all.js?v=1484881746:5) 
    at M (all.js?v=1484881746:5) 
    at U (all.js?v=1484881746:6) 
    at all.js?v=1484881746:5 
    at d (all.js?v=1484881746:5) 
    at Object.success (all.js?v=1484881746:5) 
    at d (all.js?v=1484881746:2) 
    at Object.fireWith [as resolveWith] (all.js?v=1484881746:2) 

をし、私はできません何かを検索する

あなたは私が欲しい列を検索するためにdatatableを使うのを手伝ってもらえますか? と私はスクリプトでこのスニペットを追加する必要はありません。

columns: [ 
    {data: 'gtin'}, 
    {data: 'brand_name'}, 
    {data: 'description_short'} 
] 

答えて

0

まあ列配列は、DataTableの中で何を表示するかを決定します。クライアントが表示する列がわからなくても、テーブルをどのようにレンダリングするのでしょうか?

あなたは限られた列を検索したい場合は、あなたがそうのような列のsearchable: falseを追加することができます(あなたがブランド名に基づいて検索したいいけないと言う):

columns: [ 
    {data: 'gtin'}, 
    {data: 'brand_name', searchable: false}, 
    {data: 'description_short'} 
] 
+0

ありがとう! ajaxの後にデータをフォーマットする方法を教えてください。 –

+0

データテーブルをフォーマットするには、次のスタイリングオプションを使用できます。https://datatables.net/manual/styling/classes – Paras

0

私はすでにDatatableControllerに変更することで、これを修正しました。そしてうまくいった。

関連する問題