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.

Migration Database

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

Isi File Model

  1. Model Kategori app/models/Kategori.php
<?php

namespace App\\Models;

use Illuminate\\Database\\Eloquent\\Model;

class Kategori extends Model
{
    protected $fillable = [
        'nama',
    ];
    public function events()
    {
        return $this->hasMany(Event::class);
    }
}
  1. Model Event app/models/Event.php
<?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);
    }

}

  1. Model Tiket app/models/Tiket.php
<?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');
    }

    
}
  1. Model Order app/models/Order.php
<?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);
    }

}
  1. Model Detail Order app/models/DetailOrder.php