Laravel-datatables: フッター列の要約合計

作成日 2017年07月03日  ·  9コメント  ·  ソース: yajra/laravel-datatables

問題または機能のリクエストの概要

フッター列に要約を作成するにはどうすればよいですか?

問題のコードスニペット

        $dataTableQuery = Users::query()
            ->leftJoin('user_info', 'users.id', '=', 'user_info.id')
            ->select([
                'users.id',
                'users.username',
                'users.role_id',
                'user_info.first_name',
                'user_info.last_name',
                'user_info.email',
                'users.blocked',
                'users.balance',
                'users.created',
            ]);

$sums = [
            'sum_balance' => '0',
        ];

        $datatables = Datatables::of($dataTableQuery )
            ->escapeColumns(['first_name', 'last_name', 'email'])
            ->editColumn('created', function ($user) {
                return Carbon::createFromFormat('Y-m-d H:i:s', $user->created)->toDateString();
            })
            ->editColumn('blocked', function ($user) {
                return $user->blocked_label;
            })
            ->addColumn('actions', function ($user) {
                return $user->gamers_buttons;
            })
            ->filter(function ($query) use ($request) {
                if ($request->has('username')) {
                    $query->where('username', 'like', "%{$request->get('username')}%");
                }
            })
            ->addSum('sum_balance', DB::raw("sum(balance)")) <-- How do it?
            ->with('sums', $sums);

->

システムの詳細

  • オペレーティングシステムWindows8.1
  • PHPバージョン5.6.29
  • Laravelバージョン5.4
  • Laravel-Datatablesバージョン7
question

最も参考になるコメント

$ dataTableQuery-これは、データのフィルタリングや検索を行わずに渡されます。 すべてのバインディングパラメータを使用して解析されたクエリを取得するにはどうすればよいですか?

全てのコメント9件

次のように、DTで渡される同じクエリを使用します。

->with('sum_balance', $dataTableQuery->sum('balance'))

$ dataTableQuery-これは、データのフィルタリングや検索を行わずに渡されます。 すべてのバインディングパラメータを使用して解析されたクエリを取得するにはどうすればよいですか?

これをブレードで表示するにはどうすればよいですか?

@ yurik3zzzは、最新バージョンでwithQueryapiを使用できます。

@ prakash-pokhrel ajax応答データにアクセスして、javascriptを介して表示を処理する必要があります。 次のようなもの: LaravelDataTables["users-table"].ajax.json()

@yajraまだ

drawCallbackにスクリプトを追加してみてください。

`` `js
$( '#users-table')。on( 'draw.dt'、function(){
$( '#total')。val(LaravelDataTables ["users-table"]。ajax.json()。total)
})

最新のhtmlパッケージv4.0を使用している場合は、次のようなことができます。

public function html()
{
  ...
  ->ajax()
  ->drawCallback('function() { $("#total").val( this.api().ajax.json().total ) }')
  ...

こんにちは、
「#total」は何の略ですか
-> drawCallback( 'function(){$( "#total")。val(this.api()。ajax.json()。total)}')

このIDはテーブル内ですか、それとも他のhtml要素内ですか?

これは、idを使用する要素のjqueryセレクターです。

このページは役に立ちましたか?
0 / 5 - 0 評価