'int', 'origin_airport_id' => 'int', 'destination_airport_id' => 'int', 'file_id' => 'int', 'departure_time' => 'datetime', 'price' => 'int', 'capacity' => 'int', 'status' => FlightStatus::class, 'trip_type' => FlightTripType::class ]; protected $fillable = [ 'airline_id', 'origin_airport_id', 'destination_airport_id', 'file_id', 'flight_number', 'departure_time', 'price', 'capacity', 'status', 'trip_type' ]; #[Scope] protected function applySort(Builder $query, ?string $sort = null): void { switch ($sort) { case 'popularity': $query->withCount('bookings')->orderByDesc('bookings_count'); break; case 'lowest': $query->orderBy('price'); break; case 'highest': $query->orderByDesc('price'); break; default: $query->orderByDesc('id'); break; } } public function airline() { return $this->belongsTo(Airline::class); } public function origin_airport() { return $this->belongsTo(Airport::class, 'origin_airport_id'); } public function airport() { return $this->belongsTo(Airport::class, 'destination_airport_id'); } public function file() { return $this->belongsTo(File::class); } public function bookings() { return $this->hasMany(Booking::class); } public function tours() { return $this->hasMany(Tour::class, 'file_id'); } }