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);

->

์‹œ์Šคํ…œ ์„ธ๋ถ€ ์ •๋ณด

  • ์šด์˜ ์ฒด์ œ Windows 8.1
  • PHP ๋ฒ„์ „ 5.6.29
  • Laravel ๋ฒ„์ „ 5.4
  • Laravel-Datatables ๋ฒ„์ „ 7
question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

$ dataTableQuery-๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ”์ธ๋”ฉ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ ๋œ ์ฟผ๋ฆฌ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  9 ๋Œ“๊ธ€

๋‹ค์Œ๊ณผ ๊ฐ™์ด DT์— ์ „๋‹ฌ ๋œ ๋™์ผํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

$ dataTableQuery-๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ”์ธ๋”ฉ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ ๋œ ์ฟผ๋ฆฌ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ธ”๋ ˆ์ด๋“œ์— ์ด๊ฒƒ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ yurik3zzz ์ตœ์‹  ๋ฒ„์ „์—์„œ withQuery api๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ prakash-pokhrel ajax ์‘๋‹ต ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜์—ฌ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ : LaravelDataTables["users-table"].ajax.json()

@yajra ๋‚˜๋Š” ์•„์ง๋„ ๊ทธ๊ฒƒ์„ ์–ป์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๊ฒƒ์„ datatable์˜ html () ํ•จ์ˆ˜ ์•ˆ์— ๋„ฃ๊ฑฐ๋‚˜ ๋ธ”๋ ˆ์ด๋“œ์— ์ง์ ‘ ๋„ฃ์„๊นŒ์š”? Btw, ๋‚˜๋Š” datatable์„ ์„œ๋น„์Šค๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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 ๋“ฑ๊ธ‰