Tutorial Laravel Livewire - #5 - Membuat Relasi Antar Table Dengan Laravel

Artikel ini merupakan series dari Tutorial Laravel Livewire Study Case Point Of Sales, disini kita akan membuat relasi antar tabel menggunakan eloquent relationship yang telah disedikan oleh laravel.

Rafi Taufiqurrahman
Dipublish 09/07/2024

Pendahuluan

Pada artikel sebelumnya kita telah membuat schema database sesuai dengan gambar yang kita buat, selanjutnya pada artikel ini kita akan belajar bagaimana cara merelasikan antar tabel menggunakan Eloquent Relationships yang telah disediakan oleh Laravel.

Membuat Relasi Model Product

Silahkan teman - teman buka file app/Models/Product.php, kemudian tambahkan kode seperti berikut ini :

Product.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;

    /**
     * fillable
     */
    protected $fillable = ['name', 'slug', 'category_id', 'image', 'quantity', 'price'];
    
    /**
     * relation to categories table
     */
    public function category()
    {
        return $this->belongsTo(Product::class);
    }
}

Pada kode diatas kita menambahkan relasi dari tabel products ke tabel categories yang kita beri nama dengan category, disini jenis relasi yang kita gunakan adalah belongsTo yang artinya 1 product bisa memiliki berbagai macam category.

Membuat Relasi Model Cart

Setelah berhasil membuat relasi dari tabel products ke tabel categories, kita akan lanjutkan untuk membuat relasi untuk tabel carts, silahkan teman - teman buka file app/Models/Cart.php, kemudian tambahkan kode seperti dibawah ini :

Cart.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Cart extends Model
{
    use HasFactory;

    /**
     * fillable
     */
    protected $fillable = ['user_id', 'product_id', 'quantity', 'price'];

    /**
     * relation to users table
     */
    public function user()
    {
        return $this->belongsTo(User::class);
    }

    /**
     * relation to products table
     */
    public function product()
    {
        return $this->belongsTo(Product::class);
    }
}

Pada kode diatas kita menambahkan beberapa relasi di model carts, diantarnya sebagai berikut :

  1. relasi dari tabel carts ke tabel users yang kita beri nama dengan user, disini jenis relasi yang digunakan adalah belongsTo.
  2. relasi dari tabel carts ke tabel products yang kita beri nama dengan product, disini jenis relasi yang digunakan adalah belongsTo.

Membuat Relasi Model Transaction

Pada tahap ini kita akan melanjutkan untuk membuat sebuah relasi untuk tabel transactions, silahkan teman - teman buka file app/models/Transaction, kemudian masukan kode berikut ini :

Transaction.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Transaction extends Model
{
    use HasFactory;

    /**
     * fillable
     */
    protected $fillable = ['invoice', 'user_id', 'grand_total', 'cash', 'change'];

    /**
     * relation to users table
     */
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Pada kode diatas kita menambahkan relasi dari tabel transactions ke tabel users yang kita beri nama dengan user, disini jenis relasi yang kita gunakan adalah belongsTo.

Membuat Relasi Model TransactionDetail

Tahap ini merupakan tahap terakhir dalam pembuatan relasi antar tabel yang kita miliki, silahkan teman - teman buka file app/Models/TransactionDetail.php, kemudian masukan kode berikut ini :

TransactionDetail.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class TransactionDetail extends Model
{
    use HasFactory;

    /**
     * fillable
     */
    protected $fillable = ['transaction_id', 'product_id', 'quantity', 'price'];

    /**
     * relation to transactions table
    */
    public function transaction()
    {
        return $this->belongsTo(Transaction::class);
    }

    /**
     * relation to products table
     */
    public function product()
    {
        return $this->belongsTo(Product::class);
    }
}

Pada kode diatas kita menambahkan beberapa relasi di model carts, diantarnya sebagai berikut :

  1. relasi dari tabel transaction_details ke tabel transaction yang kita beri nama dengan transaction, disini jenis relasi yang digunakan adalah belongsTo.
  2. relasi dari tabel transaction_details ke tabel products yang kita beri nama dengan product, disini jenis relasi yang digunakan adalah belongsTo.

Penutup

Pada artikel kali ini kita telah berhasil menyelesaikan pembuatan relasi antar tabel menggunakan eloquent relationships, berikutnya kita akan lanjutkan untuk berkenalan dan memanfaat eloquent accessor.

Artikel Lainnya

Beberapa artikel rekomendasi lainnya untuk menambah pengetahuan.

JurnalKoding

Mulai asah skill dengan berbagai macam teknologi - teknologi terbaru seperti Laravel, React, Vue, Inertia, Tailwind CSS, dan masih banyak lagi.

© 2024 JurnalKoding, Inc. All rights reserved.