Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ParthModi's avatar

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

0 likes
0 replies

Please or to participate in this conversation.