Как я могу искать столбцы, связанные с DataTables? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть следующая таблица:

DataTable

Поле "placa" является связью таблиц "техобслуживание" и "транспортные средства", когда я пытаюсь для поиска с помощью данных из поля "placa" таблица данных не возвращает результаты, как я могу ее решить?

Код контроллера:

public function mantenimientoData()
{
    $mantenimiento = Mantenimiento::all();

    return Datatables()
            ->eloquent(Mantenimiento::query())
            ->addColumn('placa', function($mantenimiento){
                if ($mantenimiento->vehiculo_id) {
                    return $mantenimiento->vehiculos->placa;
                } else {
                    return 'N/A';
                }
            })
            ->addColumn('btn', 'mantenimientos.actions')
            ->rawColumns(['btn'])
            ->make(true);
}

Мой взгляд:

var table = $("#mantenimientos-table").DataTable({
                serverSide: true,
                pageLength: 10,
                ajax: '{!! route('datatables.mantenimientos') !!}',
                columns: [
                    { data: 'nro_ficha', name: 'nro_ficha' },
                    { data: 'placa', name: 'placa' },
                    { data: 'fecha_ingreso', name: 'fecha_ingreso' },
                    { data: 'fecha_egreso', name: 'fecha_egreso' },
                    { data: 'estado', name: 'estado'  },
                    { data: 'valor_total', name: 'valor_total'  },
                    { data: 'btn', name: 'btn',orderable:false,serachable:false,sClass:'text-center' }
                ],
            });

Модель технического обслуживания:

class Mantenimiento extends Model
{

   public function vehiculos()
   {
       return $this->belongsTo(Vehiculo::class, 'vehiculo_id');
   }

}

и, наконец, Модель транспортных средств:

class Vehiculo extends Model
{

   public function mantenimientos()
   {
       return $this->hasMany(Mantenimiento::class);
   }

}

Извините за мой плохой английский sh, но в испанском sh я не смог найти помощь

1 Ответ

0 голосов
/ 13 апреля 2020

Я смог исправить это, применив соединение следующим образом.

В моем контроллере:

public function mantenimientoData()
{
    $mantenimientos = Mantenimiento::join('vehiculos', 'vehiculos.id', '=', 'mantenimientos.vehiculo_id')
                        ->select('vehiculos.id', 'vehiculos.placa', 'mantenimientos.nro_ficha',
                                'mantenimientos.fecha_ingreso', 'mantenimientos.fecha_egreso',
                                'mantenimientos.estado', 'mantenimientos.valor_total');

    return Datatables::of($mantenimientos)
        ->addColumn('btn', 'mantenimientos.actions')
        ->rawColumns(['btn'])
        ->make(true);
}

Затем в моем Посмотреть скрипт:

var table = $("#mantenimientos-table").DataTable({
                serverSide: true,
                pageLength: 10,
                ajax: '{!! route('datatables.mantenimientos') !!}',
                columns: [
                    { data: 'nro_ficha', name: 'mantenimientos.nro_ficha' },
                    { data: 'placa', name: 'vehiculos.placa' },
                    { data: 'fecha_ingreso', name: 'mantenimientos.fecha_ingreso' },
                    { data: 'fecha_egreso', name: 'mantenimientos.fecha_egreso' },
                    { data: 'estado', name: 'mantenimientos.estado'  },
                    { data: 'valor_total', name: 'mantenimientos.valor_total'  },
                    { data: 'btn', name: 'btn',orderable:false,serachable:false,sClass:'text-center' }
                ]
            });

Я поделюсь решением, которое помогло мне, если кому-то еще это нужно

...