feat: display tours dynamically on index page

This commit is contained in:
2026-08-16 16:58:45 +03:30
parent 374c96bb79
commit 95cc970b07
9 changed files with 114 additions and 233 deletions
+9 -1
View File
@@ -2,6 +2,8 @@
namespace App\Http\Controllers;
use App\Models\Flight;
use App\Models\Tour;
use Illuminate\Http\Request;
class IndexController extends Controller
@@ -9,6 +11,12 @@ class IndexController extends Controller
//
public function index()
{
return view('index');
$tours = Tour::query()
->with(['file', 'tour_details','originAirport' , 'destinationAirport'])
->orderByDesc('created_at')
->limit(4)
->get();
return view('index' , compact('tours'));
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers;
use App\Models\Tour;
use Illuminate\Http\Request;
class TourController extends Controller
{
public function show(Tour $tour)
{
$tour->load([
'tour_details',
'originAirport',
'destinationAirport',
'file',
]);
return view('tours.show', compact('tour'));
}
}
+13 -2
View File
@@ -12,15 +12,16 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class Airport
*
*
* @property int $id
* @property string $name
* @property string $city
* @property string $country
* @property Carbon $created_at
* @property Carbon $updated_at
*
*
* @property Collection|Flight[] $flights
* @property Collection|Tour[] $tours
*
* @package App\Models
*/
@@ -38,4 +39,14 @@ class Airport extends Model
{
return $this->hasMany(Flight::class, 'origin_airports_id');
}
public function originTours()
{
return $this->hasMany(Tour::class, 'origin_airports_id');
}
public function destinationTours()
{
return $this->hasMany(Tour::class, 'destination_airports_id');
}
}
+24 -6
View File
@@ -12,17 +12,21 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class Tour
*
*
* @property int $id
* @property string $title
* @property int $file_id
* @property int|null $file_id
* @property string $tour_type
* @property string $summary
* @property string $description
* @property Carbon $created_at
* @property Carbon $updated_at
*
* @property File $file
* @property int $origin_airports_id
* @property int $destination_airports_id
*
* @property Airport $originAirport
* @property Airport $destinationAirport
* @property File|null $file
* @property Collection|TourDetail[] $tour_details
*
* @package App\Models
@@ -32,7 +36,9 @@ class Tour extends Model
protected $table = 'tours';
protected $casts = [
'file_id' => 'int'
'file_id' => 'int',
'origin_airports_id' => 'int',
'destination_airports_id' => 'int'
];
protected $fillable = [
@@ -40,9 +46,21 @@ class Tour extends Model
'file_id',
'tour_type',
'summary',
'description'
'description',
'origin_airports_id',
'destination_airports_id'
];
public function originAirport()
{
return $this->belongsTo(Airport::class, 'origin_airports_id');
}
public function destinationAirport()
{
return $this->belongsTo(Airport::class, 'destination_airports_id');
}
public function file()
{
return $this->belongsTo(File::class);