フッター列に要約を作成するにはどうすればよいですか?
$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);
->
次のように、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セレクターです。
最も参考になるコメント
$ dataTableQuery-これは、データのフィルタリングや検索を行わずに渡されます。 すべてのバインディングパラメータを使用して解析されたクエリを取得するにはどうすればよいですか?