laravel поиск данных в addColumn - PullRequest
0 голосов
/ 28 января 2020

Я использую laravel / datatables для отображения данных.

Я манипулировал своим списком данных с помощью функции addColumn. Однако я не могу использовать поиск в представлении для добавленных столбцов. Потому что поиск работает по строкам базы данных. Datatables работает нормально, но в области поиска просмотра не работает. Потому что в таблице базы данных нет ни одной строки fullname .

Здесь вы можете найти мои коды (я хочу найти полное имя, но не могу)

Модель заказа

public function getFullname()
{
    return json_decode($this->getAttribute('delivery_adress'))->fullname;
}

OrderController. php

if ($request->ajax()) {
    return datatables()->of(Order::query())
        ->addColumn('fullname', function (Order $order) {
            return $order->getFullname();
        })->addColumn('city', function (Order $order) {
            return $order->getCity();
        })->addColumn('product_id', function (Order $order) {
            return $order->product->title;
        })->make(true);
}

Заказы Blade / Datatables код

        "pageLength": 10,
        processing: true,
        serverSide: true,
        ajax: 'orders',
        columns: [
            { data: 'id', name: 'id'},
            { data: 'fullname', name: 'fullname', defaultContent: '-' , orderable: false },
            { data: 'city', name: 'city', defaultContent: '-', orderable: false  },
            { data: 'product_id', name: 'product_id', className: 'd-none d-sm-table-cell', defaultContent: '-' },
            { data: 'totalPrice', name: 'totalPrice', className: 'd-none d-sm-table-cell', defaultContent: '-' },
        ],

enter image description here

1 Ответ

0 голосов
/ 28 января 2020

Убедитесь, что у модели заказа есть связь:

public function user()
{
    return $this->belongsTo('App\User');
}

Попробуйте обновить так:

...
    ->addColumn('fullname', function (Order $order) {
           return $order->user->fullname;
     })
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...