Pada bab Perancangan kita telah melihat beberapa informasi terkait struktur table beserta relasinya dan pada materi saat ini, kita akan coba mengimplementasikannya di dalam Laravel.
Langkah 1 - Membuat Model dan Migration Category
Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
go
php artisan make:model Category -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Category.phpdatabase/migrations/2024_11_19_010532_create_categories_table.php
INFORMASI : untuk nama file migration akan random sesuai tanggal pembuatannya.
-
Menambahkan Field
Setelah berhasil melakukan generate Model dan Migration, maka kita akan lanjutkan menambahkan sebuah field / attribute di dalam file migrasinya.
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_010532_create_categories_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('categories', function (Blueprint $table) { $table->id(); $table->string('image'); $table->string('name'); $table->string('slug'); $table->timestamps(); }); }Pada perubahan di atas, kita menambahkan 3 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION imagestring- untuk menyimpan nama gambar. namestring- untuk menyimpan nama category. slugstring- untuk menyimpan slug category. -
Menambahkan Mass Assignment
Setelah berhasil menambahkan field di dalam file migration, maka langkah selanjutnya adalah menambahkan Mass Assignment di dalam Model
Category. Ini bertujuan untuk mengizinkan field-field yang sudah kita tambahkan di atas dapat melakukan proses insert data ke dalam database.Silahkan buka file
app/Models/Category.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Category extends Model { /** * fillable * * @var array */ protected $fillable = ['image', 'name', 'slug']; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Properti tersebut bisa juga disebut dengan Mass Assigment.
Langkah 2 - Membuat Model dan Migration Product
Kita lanjutkan membuat Model dan Migration untuk data Product, sekarang silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
go
php artisan make:model Product -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Product.phpdatabase/migrations/2024_11_19_011349_create_products_table.php
-
Menambahkan Field
Setelah berhasil melakukan generate Model dan Migration, maka kita akan lanjutkan menambahkan sebuah field / attribute di dalam file migrasinya.
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_011349_create_products_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('products', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('category_id'); $table->string('image'); $table->string('title'); $table->string('slug'); $table->text('description'); $table->integer('price'); $table->integer('weight'); $table->timestamps(); // Define the foreign key relationship $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 3 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION category_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table categories.imagestring- untuk menyimpan nama gambar. titlestring- untuk menyimpan nama product. slugstring- untuk menyimpan slug product. descriptiontext- untuk menyimpan keterangan product. priceinteger- untuk menyimpan harga product. weightinteger- untuk menyimpan berat product. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Product. Silahkan buka fileapp/Models/Product.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Product extends Model { /** * fillable * * @var array */ protected $fillable = [ 'category_id', 'image', 'title', 'slug', 'description', 'price', 'weight' ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 3 - Membuat Model dan Migration Customer
Setelah berhasil membuat Model dan Migration untuk data Category dan Product, maka kita akan lanjutkan belajar membuat Model dan Migration untuk data Customer.
Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
go
php artisan make:model Customer -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Customer.phpdatabase/migrations/2024_11_19_012550_create_customers_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_012550_create_customers_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.scsspublic function up(): void { Schema::create('customers', function (Blueprint $table) { $table->id(); $table->string('image')->nullable(); $table->string('name'); $table->string('email'); $table->string('password'); $table->timestamps(); }); }Pada perubahan di atas, kita menambahkan 4 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION imagestringnullableuntuk menyimpan nama gambar dan tidak wajib diisi. namestring- untuk menyimpan nama customer. emailstring- untuk menyimpan email customer. passwordstring- untuk menyimpan password customer. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Customer. Silahkan buka fileapp/Models/Customer.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Customer extends Model { /** * fillable * * @var array */ protected $fillable = [ 'image', 'name', 'email', 'password' ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 4 - Membuat Model dan Migration Cart
Kita lanjutkan membuat Model dan Migration untuk data Cart, silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
go
php artisan make:model Cart -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Cart.phpdatabase/migrations/2024_11_19_014036_create_carts_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_014036_create_carts_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('carts', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('customer_id'); $table->unsignedBigInteger('product_id'); $table->integer('qty'); $table->timestamps(); $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 3 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION customer_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table customers.product_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table products.qtyinteger- untuk menyimpan quantity. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Cart. Silahkan buka fileapp/Models/Cart.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Cart extends Model { /** * fillable * * @var array */ protected $fillable = [ 'customer_id', 'product_id', 'qty' ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 5 - Membuat Model dan Migration Province
Sekarang kita akan membuat Model dan Migration untuk data Province, silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.
go
php artisan make:model Province -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Province.phpdatabase/migrations/2024_11_19_021407_create_provinces_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_021407_create_provinces_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('provinces', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); }Pada perubahan di atas, kita menambahkan 1 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION namestring- untuk menyimpan nama province. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Province. Silahkan buka fileapp/Models/Province.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Province extends Model { /** * fillable * * @var array */ protected $fillable = [ 'name' ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field yang kita tambahkan sebelumnya.
Langkah 6 - Membuat Model dan Migration City
Setelah berhasil membuat untuk data Province, maka kita lanjutkan untuk City-nya, silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD.
go
php artisan make:model City -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/City.phpdatabase/migrations/2024_11_19_021950_create_cities_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_021950_create_cities_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('cities', function (Blueprint $table) { $table->id(); $table->string('name'); $table->unsignedBigInteger('province_id'); $table->timestamps(); $table->foreign('province_id')->references('id')->on('provinces')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 2 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION namestring- untuk menyimpan nama city. province_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table provinces. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
City. Silahkan buka fileapp/Models/City.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class City extends Model { /** * fillable * * @var array */ protected $fillable = [ 'name', 'province_id' ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field yang kita tambahkan sebelumnya.
Langkah 7 - Membuat Model dan Migration Transaction
Sekarang kita akan membuat Model dan Migration untuk data Transaction, silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD.
go
php artisan make:model Transaction -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Transaction.phpdatabase/migrations/2024_11_19_025546_create_transactions_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_025546_create_transactions_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('transactions', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('customer_id'); $table->unsignedBigInteger('province_id'); $table->unsignedBigInteger('city_id'); $table->string('invoice'); $table->integer('weight'); $table->text('address'); $table->decimal('total', 8, 2); $table->enum('status', ['pending', 'success', 'expired', 'failed'])->default('pending'); $table->string('snap_token')->nullable(); $table->timestamps(); $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); $table->foreign('province_id')->references('id')->on('provinces')->onDelete('cascade'); $table->foreign('city_id')->references('id')->on('cities')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 9 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION customer_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table customers.province_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table provinces.city_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table cities.invoicestring- untuk menyimpan invoice. weightinteger- untuk menyimpan berat. addresstext- untuk menyimpan alamat. totaldecimal- untuk menyimpan total belanja. statusenum- untuk menyimpan status pesanan. snap_tokenstring- untuk menyimpan snap token dari Midtrans. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Transaction. Silahkan buka fileapp/Models/Transaction.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Transaction extends Model { /** * fillable * * @var array */ protected $fillable = [ 'customer_id', 'shipping_id', 'province_id', 'city_id', 'invoice', 'weight', 'address', 'total', 'status', 'snap_token', ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 8 - Membuat Model dan Migration Transaction Detail
Transaction Detail merupakan table yang berisi item-item atau product-product yang dibeli dalam satu transaksi. Sehingga nanti dalam satu transaksi akan memiliki banyak item-tem di dalamnya.
Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD.
go
php artisan make:model TransactionDetail -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/TransactionDetail.phpdatabase/migrations/2024_11_19_030448_create_transaction_details_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_030448_create_transaction_details_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('transaction_details', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('transaction_id'); $table->unsignedBigInteger('product_id'); $table->integer('qty'); $table->integer('price'); $table->timestamps(); $table->foreign('transaction_id')->references('id')->on('transactions')->onDelete('cascade'); $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 4 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION transaction_dunsignedBigIntegerforeign keyuntuk membuat relasi ke table transactions.product_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table products.qtyinteger- untuk menyimpan quantity. priceinteger- untuk menyimpan harga. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
TransactionDetail. Silahkan buka fileapp/Models/TransactionDetail.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class TransactionDetail extends Model { /** * fillable * * @var array */ protected $fillable = [ 'transaction_id', 'product_id', 'qty', 'price', ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 9 - Membuat Model dan Migration Shipping
Table ini nantinya akan kita gunakan untuk menyimpan data pengiriman yang terkait dengan sebuah transaksi.
Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
go
php artisan make:model Shipping -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Shipping.phpdatabase/migrations/2024_11_19_032035_create_shippings_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_032035_create_shippings_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('shippings', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('transaction_id'); $table->string('shipping_courier'); $table->string('shipping_service'); $table->decimal('shipping_cost', 8, 2); $table->timestamps(); $table->foreign('transaction_id')->references('id')->on('transactions')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 4 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION transaction_dunsignedBigIntegerforeign keyuntuk membuat relasi ke table transactions.shipping_courierstring- untuk menyimpan nama kurir. shipping_servicestring- untuk menyimpan layanan kurir. shipping_costdecimal- untuk menyimpan harga pengiriman. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Shipping. Silahkan buka fileapp/Models/Shipping.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Shipping extends Model { /** * fillable * * @var array */ protected $fillable = ['shipping_courier', 'shipping_service', 'shipping_cost', 'transaction_id']; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 10 - Membuat Model dan Migration Rating
Kita lanjutkan membuat Model dan Migration untuk data Rating, silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD.
go
php artisan make:model Rating -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Rating.phpdatabase/migrations/2024_11_19_033129_create_ratings_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_033129_create_ratings_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.phppublic function up(): void { Schema::create('ratings', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('transaction_detail_id'); $table->unsignedBigInteger('customer_id'); $table->unsignedBigInteger('product_id'); $table->integer('rating'); $table->text('review'); $table->timestamps(); $table->foreign('transaction_detail_id')->references('id')->on('transaction_details')->onDelete('cascade'); $table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade'); $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); }); }Pada perubahan di atas, kita menambahkan 5 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION transaction_detail_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table transaction_details.customer_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table customers.product_idunsignedBigIntegerforeign keyuntuk membuat relasi ke table products.ratinginteger- untuk menyimpan jumlah rating. reviewstring- untuk menyimpan review. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Rating. Silahkan buka fileapp/Models/Rating.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Rating extends Model { /** * fillable * * @var array */ protected $fillable = [ 'customer_id', 'product_id', 'transaction_detail_id', 'rating', 'review', ]; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.
Langkah 11 - Membuat Model dan Migration Slider
Terakhir, kita akan membuat Model dan Migration untuk data Slider, silahkan jalankan perintah berikut ini di dalam terminal/CMD.
go
php artisan make:model Slider -m
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 2 file baru, yaitu :
app/Models/Slider.phpdatabase/migrations/2024_11_19_033740_create_sliders_table.php
-
Menambahkan Field
Silahkan teman-teman buka file migrationnya yang berada di dalam folder
database/migrations/2024_11_19_033740_create_sliders_table.php, kemudian pada bagianfunction upubah menjadi seperti berikut ini.scsspublic function up(): void { Schema::create('sliders', function (Blueprint $table) { $table->id(); $table->string('image'); $table->string('link')->nullable(); $table->timestamps(); }); }Pada perubahan di atas, kita menambahkan 4 field, yaitu:
ATTRIBUTE TYPE DATA OPTIONS DESCRIPTION imagestring- untuk menyimpan nama gambar. linkstringnullableuntuk menyimpan link slider dan tidak wajib diisi. -
Menambahkan Mass Assignment
Selanjutnya adalah menambahkan Mass Assignment di dalam Model
Slider. Silahkan buka fileapp/Models/Slider.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.php<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Slider extends Model { /** * fillable * * @var array */ protected $fillable = ['image', 'link']; }Dari perubahan kode di atas, kita menambahkan properti yang bernama
$fillable. Di dalamnya berisi field-field yang kita tambahkan sebelumnya.