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);
|
||||
}
|
||||
|
||||
public function tours()
|
||||
public function destinationTours()
|
||||
{
|
||||
return $this->hasMany(Tour::class, 'destination_city_id');
|
||||
}
|
||||
|
||||
public function originTours()
|
||||
{
|
||||
return $this->hasMany(Tour::class, 'origin_city_id');
|
||||
}
|
||||
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany(User::class);
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace App\Models;
|
||||
use App\Enums\FlightStatus;
|
||||
use App\Enums\FlightTripType;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Attributes\Scope;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
@@ -65,6 +67,28 @@ class Flight extends Model
|
||||
'status',
|
||||
'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()
|
||||
{
|
||||
|
||||
+10
-1
@@ -55,6 +55,10 @@ class Tour extends Model
|
||||
{
|
||||
return $this->belongsTo(Flight::class, 'file_id');
|
||||
}
|
||||
public function originCity()
|
||||
{
|
||||
return $this->belongsTo(City::class, 'origin_city_id');
|
||||
}
|
||||
|
||||
public function city()
|
||||
{
|
||||
@@ -63,6 +67,11 @@ class Tour extends Model
|
||||
|
||||
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