Laravel-datatables: addColumn์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์—ด์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2015๋…„ 08์›” 03์ผ  ยท  22์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: yajra/laravel-datatables

์ฒซ์งธ, ์ด ๋†€๋ผ์šด ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

์ž‘์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชจ ํŒŒ์ผ์— ์ƒˆ ์‚ฌ์šฉ์ž ์ •์˜ ์—ด์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค: .../eloquent/add-edit-remove-column, ํ•ด๋‹น ์—ด์„ ๊ฒ€์ƒ‰/ํ•„ํ„ฐ๋งํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ชจ๋“  ๊ฒƒ์„ ์ž…๋ ฅํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์—ด์—์„œ ๊ฒ€์ƒ‰/ํ•„ํ„ฐ๋งํ•˜๊ณ  ๊ทธ ํ›„์— custom_column์„ ํฌํ•จํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์—ด์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ ์ž…๋ ฅ ํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

FireBug ์ฝ˜์†” ์˜ค๋ฅ˜:

  <span class="exception_message">SQLSTATE[42S22]: Column not found: 1054 Champ
 &#039;new_column&#039; inconnu dans where clause (SQL: select count(*) as aggregate from (select &#039
;1&#039; as row_count from `users` where (LOWER(`id`) LIKE %b% or LOWER(`name`) LIKE %b% or LOWER(`email
`) LIKE %b% or LOWER(`created_at`) LIKE %b% or LOWER(`updated_at`) LIKE %b% or LOWER(`new_column`) LIKE
 %b%)) count_row_table)</span>

์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฝ”๋“œ:

    public function getAddEditRemoveColumnData()
    {
        $users = User::select(['id', 'name', 'email', 'password', 'created_at', 'updated_at']);

        return Datatables::of($users)
                                 ->addColumn('new_column' , 'ABC')
                                  ->make(true)
    }

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ฝ”๋“œ:

    $('#users-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{{ url("eloquent/add-edit-remove-column-data") }}',
        columns: [
            {data: 'id', name: 'id'},
            {data: 'name', name: 'name'},
            {data: 'email', name: 'email'},
            {data: 'created_at', name: 'created_at'},
            {data: 'updated_at', name: 'updated_at'},
            {data: 'new_column', custom: 'new_column', orderable: true, searchable: true}
        ]
    });

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

@marioene , ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด addColumn ์—์„œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด select ๋ฌธ์— ์—ด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. addColumn ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

$users = User::select([
'id', 'name', 'email', 'password', 'created_at', 'updated_at',
DB::raw("'ABC' as new_column")
]);

์ฐธ๊ณ : ์ž‘๋™ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ filterColumn ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ sql์ด ์ž‘๋™ํ•˜๊ณ  ํŒจํ‚ค์ง€์—์„œ๋„ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

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

@marioene , ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด addColumn ์—์„œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด select ๋ฌธ์— ์—ด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. addColumn ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

$users = User::select([
'id', 'name', 'email', 'password', 'created_at', 'updated_at',
DB::raw("'ABC' as new_column")
]);

์ฐธ๊ณ : ์ž‘๋™ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ filterColumn ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ sql์ด ์ž‘๋™ํ•˜๊ณ  ํŒจํ‚ค์ง€์—์„œ๋„ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋น„ํ™œ์„ฑ์œผ๋กœ ์ธํ•œ ์ข…๋ฃŒ ๋ฐ ์œ„์˜ ์ œ์•ˆ๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

@yajra 'select'(์ปจํŠธ๋กค๋Ÿฌ์—์„œ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๋œ ์—ด์„ ๋จผ์ € ์ถ”๊ฐ€ํ•˜๋ผ๋Š” ๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค.

$staffData = Staff::select('id', 'staff_id', \DB::raw('concat(first_name, " ", middle_name, " ", last_name) as full_name'), 'department_name', 'status');

๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(์ปจํŠธ๋กค๋Ÿฌ์—์„œ)

$dt = Datatables::of($staffData);
return $dt->filterColumn('full_name', function($query, $keyword) {
            $query->whereRaw("CONCAT(first_name, ' ', middle_name, ' ', last_name) like ?", ["%{$keyword}%"]);
        })->make(true);

ํŽ˜์ด์ง€๋ฅผ ์ฒ˜์Œ ๋กœ๋“œํ•  ๋•Œ ์ „์—ญ ๊ฒ€์ƒ‰ ์ž…๋ ฅ ํ…์ŠคํŠธ ์ƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์ด ์ œ๋Œ€๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

Ajax error. http://datatables.net/tn/7

์ œ๊ฐ€ ์‹ค์ˆ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

@AshishGupta001 ํฌ๋กฌ ๊ฐœ๋ฐœ ๋„๊ตฌ ๋˜๋Š” ๋ฐฉํ™”๋ฒ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์•„์•ฝ์Šค ์š”์ฒญ์„ ๊ฒ€์‚ฌํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋ฌธ์ œ์˜ ์›์ธ์— ๋Œ€ํ•œ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ SQL ์˜ˆ์™ธ ๋ฌธ์ œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@yajara ๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
'๊ณ„์‚ฐ๋œ' ์—ด(์ œ ๊ฒฝ์šฐ์—๋Š” 'full_name')์— ๋Œ€ํ•œ ์ „์—ญ ๊ฒ€์ƒ‰์„ ๊ตฌํ˜„ํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ์„ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.
1) 168ํ˜ธ : https://github.com/yajra/laravel-datatables/issues/168
2) ์˜ˆ: https://datatables.yajrabox.com/eloquent/post-column-search

๋‚ด ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • 'filterColumn()'์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ํ…Œ์ด๋ธ”์— ๋ˆ„๋ฝ๋œ ์—ด 'full_name'์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” SQL ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์•„๋ž˜์™€ ๊ฐ™์ด '๊ณ„์‚ฐ๋œ' ์—ด(๋‚ด ๊ฒฝ์šฐ์—๋Š” 'full_name')์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

$dt->filterColumn('full_name', function($query, $keyword) {
       $query->whereRaw("CONCAT(staff.first_name, ' ', staff.middle_name, ' ', staff.last_name) like ?", ["%{$keyword}%"]);
});

return $dt->make(true);

์ด์ œ ๋กœ๊ทธ์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

mb_strtolower() expects parameter 1 to be string, object given ํŒŒ์ผ ......./vendor/laravel/framework/src/Illuminate/Support/Str.php#162

์ด ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊ทธํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@AshishGupta001 ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ท€ํ•˜์˜ ์ฝ”๋“œ๋Š” ๋‚˜์—๊ฒŒ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

@yajra ํ™•์ธ

PHP - 5.5.38-3
๋ผ๋ผ๋ฒจ - 5.0.34
Datatables - yajra / laravel-datatables ์˜ค๋ผํด (composer.json ๊ฐ™์ด) ^ 6.3

Helper ํด๋ž˜์Šค์˜ 'getOrMethod'์— ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ "clouser"๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ๋ณ€ํ™˜์„ ์‹œ๋„ํ•  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

public static function getOrMethod($method) {
   if (! Str::contains(Str::lower($method), 'or')) {
      return 'or' . ucfirst($method);
   }
      return $method;
}

'$method'๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด function($query, $keyword) ์ „๋‹ฌ๋œ ํด๋กœ์ €์ž…๋‹ˆ๋‹ค.

Closure {#864
  reflection: """
    Closure [ <user> public method App\Http\Controllers\{closure} ] {\n
      @@ /var/www/html/XYZ/app/Http/Controllers/StaffHistoryController.php 310 - 313\n
    \n
      - Parameters [2] {\n
        Parameter #0 [ <required> $query ]\n
        Parameter #1 [ <required> $keyword ]\n
      }\n
    }\n
    """
}

๋‚ด๊ฐ€ ์ง๋ฉดํ•œ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜๋Š” ์—†์—ˆ์ง€๋งŒ ์ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด๊ธฐ: ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ๋‚ด์˜ ๋ณด๊ธฐ์— ๋‹ค์Œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

{ data: 'full_name', name: 'full_name', searchable: false },
{ data: 'first_name', name: 'first_name', searchable: true, visible: false },
{ data: 'middle_name', name: 'middle_name', searchable: true, visible: false },
{ data: 'last_name', name: 'last_name', searchable: true, visible: false }

์ปจํŠธ๋กค๋Ÿฌ: ๋‚˜๋จธ์ง€ ์—ด ๊ฐ’๊ณผ ํ•จ๊ป˜ SQL ์ฟผ๋ฆฌ์—์„œ first_name ๋“ฑ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

@AshishGupta001 ์•Œ์•„

@AshishGupta001 ์ข‹์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค!

@yajra ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ์ด์ง€๋งŒ JS์—์„œ ์ด ์—ด์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” addColumn์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€๋œ ์—ด์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ๋ฉด JS์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•:

  1. js์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋ง์”€ํ•˜์‹  ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.
  2. filterColumn์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€๋œ ์—ด์˜ ๊ฒ€์ƒ‰์„ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
{data: 'added_column', name: 'actual_column_name'}

๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @yajra

์ด๋ฏธ ๋‘ ๋ฒˆ์งธ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์ด ์ถ”๊ฐ€๋œ ์—ด์ด ์ฟผ๋ฆฌ์—์„œ ๊ณ ๋ ค๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์ด๊ฒฌ์žˆ๋Š” ์‚ฌ๋žŒ ?

ํ•ด๋‹น ์—ด์— searchable: false ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ->addColumn('company_name', function($deal) { return $deal->company_name; }) ์—ด์„ ์ถ”๊ฐ€ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  $dataTable->filterColumn('company_name', 'where', "like", ["%$keyword%"]); ์™€ ๊ฐ™์€ ๊ธ€๋กœ๋ฒŒ ๊ฒ€์ƒ‰์–ด

๋ฐฑ์—”๋“œ์—์„œ searchable: false ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

searchable: false ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก js์— ์žˆ์Šต๋‹ˆ๋‹ค.

BTW, ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์–ธ๊ธ‰ํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
v6.17.0

@AshishGupta001 ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ํด๋ผ์ด์–ธํŠธ ์ธก ํŠธ๋ฆญ์€ ์—ด์„ ์ •๋ ฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
filterColumn ๋Œ€์•ˆ์„ ํƒ์ƒ‰ํ–ˆ์ง€๋งŒ ์ž‘๋™์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
"yajra/laravel-datatables-oracle" ์‚ฌ์šฉ: "~9.0"

์ปจํŠธ๋กค๋Ÿฌ ๋ฐฉ๋ฒ•:

    public function getAccounts(Request $request)
    {
        if ($request->ajax()) {
            $accounts = Account::with('current_marketer')->select([
                '*',
                DB::raw("CONCAT(accounts.lastname,' ',accounts.firstname) as fullname"),
            ]);
            return Datatables::of(Account::query()->with('current_marketer'))
            ->addColumn('marketer', function(Account $account){
                return $account->current_marketer->name;
            })
            ->addColumn('fullname', function($account){
                return '<a href="'.route('account.clients.show', $account->account_number).'" class="hover:underline" target="_blank">'. $account->fullname.'</a>';
            })
            ->filterColumn('fullname', function($query, $keyword) {
                $sql = "CONCAT(accounts.lastname,' ',accounts.firstname)  like ?";
                $$query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->rawColumns(['fullname'])
            ->editColumn('created_on', function(Account $account) {
                return Carbon::parse($account->created_on)->format('jS F, Y');
            })
            ->toJson();
        }
        return view('datatables.accounts.index');
    }

๋ธ”๋ ˆ์ด๋“œ js:

 $('#accounts-table').DataTable({
          "processing": true,
          "serverSide": true,
          "ajax": '{{ route('accounts.get') }}',
          "columns": [
            { data: "id" },
            { data: "account_number" },
            { data: 'fullname'},
            { data: "marketer" },
            { data: "created_on" },
          ]
        });

์˜ˆ์™ธ: ๊ฒ€์ƒ‰ ๋˜๋Š” ์ •๋ ฌ ์‹œ๋„ ์‹œ:

yajraIssue

๊ทธ ์˜ˆ์™ธ์˜ ๋ฌธ์ œ๊ฐ€ ๋‚ด ์ž˜๋ชป์ž„์ด ๋ฐํ˜€์กŒ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚ด filterColumn ๋ฉ”์„œ๋“œ์— ์ด์ค‘ '$$' ๊ธฐํ˜ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
yajra_issue_fix_1

๊ทธ๋ž˜๋„ ์ •๋ ฌ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„์ง ์•Œ์•„์•ผ ํ•  ์‚ฌํ•ญ:

  1. ์—ด์„ ์ •๋ ฌ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
  2. ๊ด€๋ จ ์—ด์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋˜ ๋‹ค๋ฅธ ๋ฌธ์„œ์—์„œ ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

@seewhy17 ๋ณต์žกํ•œ ์ •๋ ฌ์„ ์œ„ํ•ด orderColumn ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ fullname ์ฃผ๋ฌธํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@seewhy17 ๋ณต์žกํ•œ ์ •๋ ฌ์„ ์œ„ํ•ด orderColumn ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ fullname ์ฃผ๋ฌธํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. filterColumn ๋ฉ”์„œ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋ธ์˜ ํ‰๊ฐ€์ž์™€ ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... ์ •๋ง ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
js์— name: lastname ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ผ์ข…์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ ์„ฑ์œผ๋กœ ํ•„ํ„ฐ๋งํ•˜๊ณ  filterColumn ๋ฉ”์„œ๋“œ๋Š” ์ค‘๋ณต๋ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰