Merelasikan Antar Tabel Pada Migrasi Database Atau Migration Database Framework Laravel 5


Merelasikan Antar Tabel Pada Migrasi Database Atau Database Migration Framework Laravel 5 Dengan PHP Artisan

Pada tutorial kali ini saya akan merelasikan Antar Tabel Pada Migrasi Database Atau Database Migration Framework Laravel 5.3, dengan contoh saya mempunyai database pembukuan pendapatan dan pengeluaran keuangan harian untuk memanage keuangan saya sendiri di rumah.


Langkah pertama buatlah beberapa tabel dengan perintah dibawah ini : 
 
    $ php artisan make:migration create_users_table 
    > Created Migration: 2014_10_12_000000_create_users_table

    $ php artisan make:migration create_password_resets_table 
    > Created Migration: 2014_10_12_100000_create_password_resets_table

    $ php artisan make:migration create_pengeluaran_table 
    > Created Migration: 2017_04_02_120349_create_pemasukan_table

    $ php artisan make:migration create_pemasukan_table 
    > Created Migration: 2017_04_02_145304_create_pengeluaran_table  

Cek di folder migrations nya, saya asumsikan pembaca sudah pada tahu dimana letaknya ya.
Berikut isi dari file 2014_10_12_000000_create_users_table.php
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table)
        {

            $table->increments('users_id');
            $table->string('name',75);
            $table->string('username', 10)->unique();
            $table->string('email',75)->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();

        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::enableForeignKeyConstraints();
        schema::drop('users');
        Schema::disableForeignKeyConstraints();       
    }
}

Berikut saya sedikit jelaskan pada bagian method Down() ada terdapat sintaks, Schema::disableForeignKeyConstraints(); dan Schema::enableForeignKeyConstraints(); ini berfungsi untuk mengaktifkan dan menonaktifkan ForeignConstraints nya, itu menurut pemahaman saya mungkin seperti itu, karena telah dijelaskan juga pada dokumentasi Laravelnya.
Kemudian saya buka juga file 2017_04_02_145304_create_pengeluaran_table.php berikut isi dari file tersebut :
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePengeluaranTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        schema::create('pengeluaran', function(Blueprint $table)
        {

            $table->increments('id');
            $table->integer('users_id')->unsigned();
            $table->string('keterangan', 30);
            $table->date('tgl');
            $table->integer('jumlah_pengeluaran');

            $table->foreign('users_id')
                  ->references('users_id')
                  ->on('users')
                  ->onDelete('restrict');

        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
       schema::drop('pengeluaran');
    }
}

Dan saya jelaskan kembali pada $table->foreign('users_id')->references('users_id')->on('users')->onDelete('restrict'); ini menunjukan yang berarti bahwa field users_id pada tabel pengeluaran berelasi dengan field users_id / Primary Key pada tabel users, dan saya kasih restrict (membatasi / mencegah) jika terdapat data pada tabel user berelasi dengan data pada tabel pengeluaran dihapus.
Dan sekarang coba jalankan dengan perintah php artisan migrate dan lihat pada gambar hasil nya, tabel tabel yang tadi telah saling berelasi


Sekian dari saya, tetap belajar pantang menyerah dalam menghadapi coding error. emot emoji | FajarPunya | Backup Database MySql Dengan Terminal Linux Ubuntu / Command Line (CLI)

Subscribe to receive free email updates: