Laravel Database Migrations #2

Hallo Sahabat TimUR 6

Cermi kali ini adalah lanjutan dari Laravel Data Migration #1

Function yang akan kita Bahas
  • Tables.
  • Columns.
  • Indexes.
Tables
  • Creating Tables

Untuk membuat tabel database baru, gunakan metode create pada schema fasad.
Metode create menerima dua argumen. Yang pertama adalah nama tabel dan yang kedua adalah penutupan, yang menerima objek Blueprint yang bisa digunakan untuk mendefinisikan tabel baru.

Schema::create('users', function (Blueprint $table) 
{
    $table->increments('id');
});

Saat membuat tabel, Anda dapat menggunakan salah satu Schema Builder kolom untuk menentukan kolom tabel.

  • Checking For Table / Column Existence

Anda dapat dengan mudah memeriksa adanya tabel atau kolom menggunakan metode hasTable dan hasColumn.

if (Schema::hasTable('users')) {
    //
}

if (Schema::hasColumn('users', 'email')) {
    //
}
  • Connection & Storage Engine

Jika Anda ingin melakukan operasi skema pada koneksi database yang bukan koneksi default Anda, Anda bisa menggunakan metode Connection.

Schema::connection('foo')->create('users', function (Blueprint $table) {
    $table->increments('id');
});

Anda bisa menggunakan engine Property pada Schema Builder untuk menentukan table storage engine.

Schema::create('users', function (Blueprint $table) {
    $table->engine = 'InnoDB';

    $table->increments('id');
});
  • Renaming / Dropping Tables

Untuk mengganti nama tabel database yang ada, gunakan metode rename.

Schema::rename($from, $to);

Untuk menghapus tabel yang ada, Anda dapat menggunakan metode drop atau dropIfExists.

Schema::drop('users');

Schema::dropIfExists('users');
Columns
  • Creating Columns

Metode table pada schema facade dapat digunakan untuk memperbarui tabel yang ada.

Schema::table('users', function (Blueprint $table) {
    $table->string('email');
});
  • Available Column Types
    Schema Builder berisi berbagai jenis kolom yang dapat Anda tentukan saat membuat tabel Anda.

 

  • Column Modifiers

Selain jenis kolom yang tercantum di atas, ada beberapa kolom “modifiers” yang dapat Anda gunakan sambil menambahkan kolom ke tabel database.

Schema::table('users', function (Blueprint $table) {
    $table->string('email')->nullable();
});

Berikut adalah daftar semua Modifier kolom yang tersedia.

Modifying Columns

  •  Prerequisites

Sebelum memodifikasi kolom, pastikan untuk menambahkan doctrine/dbal dependency ke file composer.json Anda.

composer require doctrine/dbal
  • Updating Column Attributes

Metode Change memungkinkan Anda memodifikasi beberapa jenis kolom yang ada ke jenis baru atau memodifikasi atribut kolom.

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});

Kita juga bisa memodifikasi kolom menjadi nullable.

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->nullable()->change();
});
  • Renaming Columns

Untuk mengganti nama kolom, Anda dapat menggunakan renameColumn pada Schema builder.

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('from', 'to');
});

Dropping Columns

Metode dropColumn digunakan untuk menghapus kolom.

Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('votes');
});

Anda juga bisa menghapus beberapa kolom dari sebuah tabel dengan melalui sebuah array.

Schema::table('users', function (Blueprint $table) {
    $table->dropColumn(['votes', 'avatar', 'location']);
});
Indexes
  • Creating Indexes

Schema builder mendukung beberapa jenis indeks. Misalnya yang menentukan nilai kolom harus unik. Untuk membuat indeks, kita bisa mengelompokkan metode unique ke kolom defination.

$table->string('email')->unique();

Anda dapat membuat indeks setelah menentukan kolom.

$table->unique('email');

Anda bisa melalui array kolom ke metode indeks untuk membuat indeks gabungan.

$table->index(['account_id', 'created_at']);

  • Dropping Indexes

Untuk menghapus indeks, Anda harus menentukan nama indeks. Laravel secara otomatis memberikan nama yang masuk akal ke indeks. Cukup menggabungkan nama tabel, nama kolom yang diindeks, dan jenis indeksnya.

Jika Anda menggunakan sebuah kolom array ke dalam sebuah metode yang menghapus indeks, nama indeks konvensional akan dihasilkan berdasarkan nama tabel, kolom dan tipe kunci.

Schema::table('geo', function (Blueprint $table) {
    $table->dropIndex(['state']); // Drops index 'geo_state_index'
});
Terimakasih
Referensi
Views All Time
Views All Time
122
Views Today
Views Today
1
124 Total Views 1 Views Today

Article written by

Satu-satunya cara untuk melakukan pekerjaan yang hebat adalah mencintai apa yang kamu lakukan.

12 Responses

  1. Wah Adam banyak sekali informasi pada cermi ini, seperti cermi sebelumnya juga ya masih tentang database migrations. Terima kasih ya Adam sudah berbagi cermi ini 🙂

  2. Terimakasih Adam untuk informasinya, semoga dengan sharing cermi ini menambah pengetahuan kita semua dan yang pastinya hobi untuk sharing yupp^^

  3. Wahh terimakasih informasinya adam sangat bermanfaat sekali jadi dapet ilmu baru lagi dan penjelasan dari adam mudah di pahami juga . tetap semangat ya dam untuk mengerjakan Projectnya^^

  4. Selalu suka cermi dari team Sultan karena menambah wawasan banget buat ivy yang belum paham apa apa tentang coding terutama laravel, thanks for sharing ya dam dan semangat untuk project nya

  5. wah adam terimakasih ya sudah sharing yang sangat bermanfaat terutama untuk yuli, penjelasan yang diberikan juga sangat mudah di pahami, semangat terus ya adam untuk menyelesaikan projectnya , sukses selalu

  6. Good Job adam sudah sharing hal yang bermanfaat tentang laravel database migrations khusus nya tentang tables, coloumn dan indexes.
    sangat lengakap cermi nya dan mudah di mengerti

  7. ketika membuka cermi ini, banyak pengetahuan baru bagi pembacanya. terimakasih adam informasi yang sudah di berikan. jelas dan mudah di pahami. semoga nanti kedepannya bisa membuat hal hal yang bermanfaat lagi untuk kita semua baca ya. Thanks for sharing 🙂

  8. wah goodjob adam, terimakasih sudah sharing ya sangat bermanfaat dan mudah sekali untuk dimengerti, semoga lancar ya untuk menyelesaikan projectnya semangat terus sukses selalu

Leave a Reply

You must be logged in to post a comment.