Jan 3, 2024
0
Level 1
Facing issue in yajra datatable
when Page load the all column record show also when i short record with date, time also its work but when i Short tail column then its show DataTables warning like below and remve all aircraft name from column
DataTables warning: table id=empty-leg-datatable - Requested unknown parameter 'aircraft.tail_number' for row 0, column 1. For more information about this error, please see http://datatables.net/tn/4
below i have add my datatable code
<?php
namespace App\DataTables;
use Carbon\Carbon;
use App\Models\AirCraft;
use App\Models\EmptyLegFlight;
use Yajra\DataTables\EloquentDataTable;
use Yajra\DataTables\Services\DataTable;
use App\Http\Controllers\AppBaseController;
class EmptyLegFlightDataTable extends DataTable
{
/**
* Build DataTable class.
*
* @param mixed $query Results from query() method.
* @return \Yajra\DataTables\DataTableAbstract
*/
public function dataTable($query)
{
$dataTable = new EloquentDataTable($query);
return $dataTable
->editColumn('departure_date', function ($row) {
return date('m-d-Y', strtotime($row->departure_date));
})
->editColumn('user_name', function ($data) {
if (isset($data->user_id) && $data->user_id != null) {
$user_full_name = $data->user->first_name . " " . $data->user->last_name;
return $user_full_name;
}
return "-";
})
->editColumn('departure_time', function ($data) {
if (isset($data->departure_time)) {
$time = explode(":", $data->departure_time);
$datetime = $data->departure_date . " " . $data->departure_time;
$datetimeThis = new AppBaseController;
$convertUTCTo = $datetimeThis->convertUTCTo($datetime, $data->departure_timezone);
return $convertUTCTo . " " . $data->departure_timezone;
}
return "-";
})
->editColumn('status', function ($data) {
if (isset($data->status)) {
if ($data->status == 1) {
$status = 'Available';
} else if ($data->status == 2) {
$status = 'Request Received';
} else if ($data->status == 3) {
$status = 'Booked';
} else {
$status = 'Cancle';
}
return $status;
}
return "-";
})
->editColumn('total_cost', function ($data) {
if (isset($data->total_cost)) {
$new_cost = "$" . $data->total_cost;
return $new_cost;
}
return "-";
})
->editColumn('total_passenger', function ($data) {
if (isset($data->total_passenger)) {
$new_passengers = $data->total_passenger . " passengers";
return $new_passengers;
}
return "-";
})
// ->addColumn('aircraft_name', function ($data) {
// return $data->aircraft->name ?? '-';
// })->editColumn('aircraft_name', function ($data) {
// return $data->aircraft->name ?? '-';
// })
->addColumn('action', 'admin.empty_leg_flghts.datatables_actions')
->rawColumns(['action']);
}
/**
* Get query source of dataTable.
*
* @param \App\Models\AirCraft $model
* @return \Illuminate\Database\Eloquent\Builder
*/
public function query(EmptyLegFlight $model)
{
$selectedStatus = $this->request()->get('status');
// dd($selectedStatus);
// return $model->newQuery()->with('aircraft');
$query = $model->newQuery()->with(['user', 'aircraft']);
if (isset($selectedStatus) && $selectedStatus[0] != null) {
$query->whereIn('status', $selectedStatus);
} else {
$query->whereIn('status', [1, 2]);
}
// $sqlQuery = $query->toSql();
// dd($sqlQuery);
return $query;
}
/**
* Optional method if you want to use html builder.
*
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
{
return $this->builder()
->columns($this->getColumns())
->setTableId('empty-leg-datatable')
->minifiedAjax()
->addAction(['width' => '120px', 'printable' => false])
->parameters([
'dom' => 'Bfrtip',
'stateSave' => true,
'order' => [[0, 'desc']],
]);
}
/**
* Get columns.
*
* @return array
*/
protected function getColumns()
{
return [
'flight_number' => new \Yajra\DataTables\Html\Column([
'name' => 'flight_number',
'data' => 'flight_number',
'title' => 'Flight#',
'sortable' => true,
'searchable' => true
]),
'tail_number' => new \Yajra\DataTables\Html\Column([
'name' => 'aircraft.tail_number',
'data' => 'aircraft.tail_number',
'title' => 'Tail#',
'sortable' => true,
'searchable' => true
]),
'user_name' => new \Yajra\DataTables\Html\Column([
'name' => 'user_name',
'data' => 'user_name',
'title' => 'Passenger',
'sortable' => false,
'searchable' => false
]),
'departure_date' => new \Yajra\DataTables\Html\Column([
'name' => 'departure_date',
'data' => 'departure_date',
'title' => 'Date',
'sortable' => true,
'searchable' => false
]),
'departure_time' => new \Yajra\DataTables\Html\Column([
'name' => 'departure_time',
'data' => 'departure_time',
'title' => 'Time',
'sortable' => true,
'searchable' => false
]),
'departure_from_code' => new \Yajra\DataTables\Html\Column([
'name' => 'departure_from_code',
'data' => 'departure_from_code',
'title' => 'Departure',
'sortable' => true,
'searchable' => false
]),
'arrival_to_code' => new \Yajra\DataTables\Html\Column([
'name' => 'arrival_to_code',
'data' => 'arrival_to_code',
'title' => 'Arrival',
'sortable' => true,
'searchable' => false
]),
'aircraft_name' => new \Yajra\DataTables\Html\Column([
'name' => 'aircraft.name',
'data' => 'aircraft.name',
'title' => 'Aircraft Name',
'sortable' => false,
'searchable' => false
]),
'total_passenger' => new \Yajra\DataTables\Html\Column([
'name' => 'total_passenger',
'data' => 'total_passenger',
'title' => 'Total Passengers',
'sortable' => true,
'searchable' => false
]),
'total_cost' => new \Yajra\DataTables\Html\Column([
'name' => 'total_cost',
'data' => 'total_cost',
'title' => 'Cost',
'sortable' => true,
'searchable' => false
]),
'status' => new \Yajra\DataTables\Html\Column([
'name' => 'status',
'data' => 'status',
'title' => 'Status',
'sortable' => true,
'searchable' => false
]),
];
}
/**
* Get filename for export.
*
* @return string
*/
protected function filename(): string
{
return 'empty_leg_flight_datatable_' . time();
}
}
below i have add my EmptyLegFlight model
<?php
namespace App\Models;
use App\Models\FlightRequest;
use App\Models\FlightsReturnDetail;
use App\Models\FlightsOutboundDetail;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class EmptyLegFlight extends Model
{
use HasFactory, SoftDeletes;
protected $table = "empty_leg_flights";
public $primaryKey = 'id';
protected $fillable = [
'flight_number',
'tail_number',
'departure_date',
'departure_time',
'departure_timezone',
'arrival_date',
'arrival_time',
'arrival_timezone',
'departure_from',
'departure_city',
'departure_country',
'departure_from_code',
'departure_from_lat',
'departure_from_long',
'arrival_to_lat',
'arrival_to_long',
'arrival_to',
'arrival_city',
'arrival_country',
'arrival_to_code',
'total_passenger',
'total_cost',
'aircraft_category_id',
'status',
];
public function aircraft() {
return $this->belongsTo(AirCraft::class,'tail_number','flight_number')->select('name','flight_number','tail_number','interior_image_path','exterior_image_path');
}
public function user() {
return $this->belongsTo(User::class,'user_id','id');
}
}
I don't know how to solved this issue bcz my relation is working on every time expect shorting on tail column
Please or to participate in this conversation.