Untuk membuat model sekaligus file migration, dapat menggunakan option -m pada perintah php artisan make:model NamaModel. Tanpa option -m, hanya akan dibuat file modelnya saja.
Membuat Migration Kategori, Event, Tiket, Order, DetailOrder
php artisan make:model Kategori -m
php artisan make:model Event -m
php artisan make:model Tiket -m
php artisan make:model Order -m
php artisan make:model DetailOrder -m
<?php
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Model;
class Kategori extends Model
{
protected $fillable = [
'nama',
];
public function events()
{
return $this->hasMany(Event::class);
}
}
<?php
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Factories\\HasFactory;
use Illuminate\\Database\\Eloquent\\Model;
class Event extends Model
{
use HasFactory;
protected $fillable = [
'nama',
'deskripsi',
'tanggal',
'lokasi',
'gambar',
];
protected $casts = [
'tanggal' => 'datetime',
];
public function tikets()
{
return $this->hasMany(Tiket::class);
}
public function kategori()
{
return $this->belongsTo(Kategori::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function orders()
{
return $this->hasMany(Order::class);
}
}
<?php
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Model;
class Tiket extends Model
{
protected $fillable = [
'event_id',
'tipe',
'harga',
'stok',
];
public function event()
{
return $this->belongsTo(Event::class);
}
public function detailOrders()
{
return $this->hasMany(DetailOrder::class);
}
public function orders()
{
return $this->belongsToMany(Order::class, 'detail_orders')->withPivot('jumlah', 'subtotal_harga');
}
}
<?php
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Model;
class Order extends Model
{
protected $fillable = [
'user_id',
'total_harga',
];
public function user()
{
return $this->belongsTo(User::class);
}
public function tikets()
{
return $this->belongsToMany(Tiket::class, 'detail_orders')->withPivot('jumlah', 'subtotal_harga');
}
public function events()
{
return $this->belongsTo(Event::class);
}
public function detailOrders()
{
return $this->hasMany(DetailOrder::class);
}
}