feat: update models and relationships
This commit is contained in:
+6
-1
@@ -65,11 +65,16 @@ class City extends Model
|
|||||||
return $this->hasMany(Airport::class);
|
return $this->hasMany(Airport::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tours()
|
public function destinationTours()
|
||||||
{
|
{
|
||||||
return $this->hasMany(Tour::class, 'destination_city_id');
|
return $this->hasMany(Tour::class, 'destination_city_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function originTours()
|
||||||
|
{
|
||||||
|
return $this->hasMany(Tour::class, 'origin_city_id');
|
||||||
|
}
|
||||||
|
|
||||||
public function users()
|
public function users()
|
||||||
{
|
{
|
||||||
return $this->hasMany(User::class);
|
return $this->hasMany(User::class);
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ namespace App\Models;
|
|||||||
use App\Enums\FlightStatus;
|
use App\Enums\FlightStatus;
|
||||||
use App\Enums\FlightTripType;
|
use App\Enums\FlightTripType;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Database\Eloquent\Attributes\Scope;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
@@ -65,6 +67,28 @@ class Flight extends Model
|
|||||||
'status',
|
'status',
|
||||||
'trip_type'
|
'trip_type'
|
||||||
];
|
];
|
||||||
|
#[Scope]
|
||||||
|
protected function applySort(Builder $query): void
|
||||||
|
{
|
||||||
|
switch (request()->input('sort')) {
|
||||||
|
case 'popularity':
|
||||||
|
$query->withCount('bookings')
|
||||||
|
->orderByDesc('bookings_count');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'lowest':
|
||||||
|
$query->orderBy('price');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'highest':
|
||||||
|
$query->orderByDesc('price');
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
$query->latest('id'); // همهی پروازها
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function airline()
|
public function airline()
|
||||||
{
|
{
|
||||||
|
|||||||
+10
-1
@@ -55,6 +55,10 @@ class Tour extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(Flight::class, 'file_id');
|
return $this->belongsTo(Flight::class, 'file_id');
|
||||||
}
|
}
|
||||||
|
public function originCity()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(City::class, 'origin_city_id');
|
||||||
|
}
|
||||||
|
|
||||||
public function city()
|
public function city()
|
||||||
{
|
{
|
||||||
@@ -63,6 +67,11 @@ class Tour extends Model
|
|||||||
|
|
||||||
public function tourDepartures()
|
public function tourDepartures()
|
||||||
{
|
{
|
||||||
return $this->hasMany(TourDeparture::class);
|
return $this->hasMany(TourDeparture::class , 'tour_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function file()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(File::class, 'file_id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user