Как добавить или отредактировать столбец с ошибкой закрытия в коллекции запросов Yajra datatables в Laravel?

https://yajrabox.com/docs/laravel-datatables/master/edit-column пример говорит

$model = App\User::query();
return DataTables::eloquent($model)
    ->addColumn('intro', function(User $user) {
        return 'Hi ' . $user->name . '!';
    })
    ->toJson();

Я не знаю, кто пользователь? Это как User как $User? Пользователь - это каждая строка?

Поэтому я пытаюсь

$search_alls=
    DB::table('a16')
        ->select('*')
        ->where('name','=','john')
        ->get();

return DataTables::collection($search_alls)
    ->addColumn('newclass', function(User $user) {
        return 'Hi ' . $user->id . '!';
    })
    ->toJson();

Я получил общую ошибку

Предупреждение DataTables: id таблицы=users-table - ошибка Ajax. Дополнительные сведения об этой ошибке см. на странице http://datatables.net/tn/7.

Как я могу использовать закрытие для добавления или редактирования столбца? Я хочу использовать условие if, чтобы добавить одно значение столбца в класс, чтобы показать значок.

ниже приведен пример редактирования, который я до сих пор не знаю, как использовать, поскольку я не знаю, что такое use или $user? Кто-нибудь может объяснить мне? спасибо~

use DataTables;

Route::get('user-data', function() {
    $model = App\User::query();

    return DataTables::eloquent($model)
        ->editColumn('name', function(User $user) {
            return 'Hi ' . $user->name . '!';
        })
        ->toJson();
});

person robspin    schedule 23.04.2018    source источник


Ответы (2)


Попробуй это:

$data = App\User::select('*')
                ->where('name','=','john');

return DataTables::collection($data)
                 ->addColumn('newclass', function($data) {
                      return 'Hi ' . $data->name . '!';
                 })
                 ->toJson();

Также помните, что если вы пытаетесь отобразить HTML-контент, вам нужно добавить имя созданного столбца (в данном случае «newclass») в «сырой» параметр конфигурационного файла datatables. Позвольте мне знать, если это помогает!

person chunterb    schedule 19.11.2018

Вы понимаете, что делает escapeColumns([])?

Мне кажется, что он отключил ВСЕ экранирование HTML, установив НЕТ столбцов для применения экранирования HTML. Это может быть простой способ решить одну проблему, а затем привести вас к опасной ситуации при других обстоятельствах.

добавить escapeColumns([]) после addColumn

->addColumn(){...}
->escapeColumns([])
person Amir Hosseinzadeh    schedule 11.05.2021