Daftar Perintah Migration-nya Laravel - Dunia Laravel
Artikel ini bakal ngejabarin perintah-perintah yang
ada di migration Laravel. Buat kalian yang masih bingung sama migration bisa
baca-baca dulu artikel yang sebelumnya yah…
Table of Contents
- Column Types
- Column Modifiers
- Modifying Columns
- Creating Indexes
- What's Next?
Column Types
Mari mulai dari tipe data kolom. Tipe data kolom merupakan
hal yang harus ada pada saat buat table. Karena tipe data kolom ini nanti yang
akan menentukan data apa yang mau di simpen di dalamnya.
Perintah
|
Keterangan
|
$table->id();
|
Sama dengan $table->bigIncrements('id'); hanya saja
lebih singkat
|
$table->foreignId('user_id');
|
Sama
dengan
$table->unsignedBigInteger('user_id'); hanya saja
lebih singkat
|
$table->bigIncrements('id');
|
Tipe
data INTEGER ukuran big yang Auto-increment biasa di pake buat ‘primary key’
|
$table->bigInteger('votes');
|
Tipe
data INTEGER ukuran big
|
$table->binary('data');
|
Tipe
data BLOB
|
$table->boolean('confirmed');
|
Tipe
data BOOLEAN
|
$table->char('name', 100);
|
Tipe
data CHAR dengan panjang 100
|
$table->date('created_at');
|
Tipe
data DATE
|
$table->dateTime('created_at', 0);
|
Tipe
data DATETIME menggunakan presisi
|
$table->dateTimeTz('created_at', 0);
|
Tipe
data DATETIME (dengan Time Zone) menggunakan presisi
|
$table->decimal('amount', 8, 2);
|
Tipe
data DECIMAL dengan jumlah digit, dan jumlah decimal
|
$table->double('amount', 8, 2);
|
Tipe
data DOUBLE dengan jumlah digit, dan jumlah decimal
|
$table->enum('level', ['easy', 'hard']);
|
Tipe
data ENUM
|
$table->float('amount', 8, 2);
|
Tipe
data FLOAT dengan jumlah digit, dan jumlah decimal
|
$table->geometry('positions');
|
Tipe
data GEOMETRY
|
$table->geometryCollection('positions');
|
Tipe
data GEOMETRYCOLLECTION
|
$table->increments('id');
|
Tipe
data INTEGER yang Auto-increment biasa di pake buat ‘primary key’
|
$table->integer('votes');
|
Tipe
data INTEGER
|
$table->ipAddress('visitor');
|
Tipe
data IP ADDRESS
|
$table->json('options');
|
Tipe
data JSON
|
$table->jsonb('options');
|
Tipe
data JSONB
|
$table->lineString('positions');
|
Tipe
data LINESTRING
|
$table->longText('description');
|
Tipe
data LONGTEXT
|
$table->macAddress('device');
|
Tipe
data MACADDRESS
|
$table->mediumIncrements('id');
|
Tipe
data INTEGER berukuran medium yang Auto-increment
|
$table->mediumInteger('votes');
|
Tipe
data INTEGER berukuran medium
|
$table->mediumText('description');
|
Tipe
data TEXT berukuran medium
|
$table->morphs('taggable');
|
Menambahkan
kolom bernama ‘taggable_id’ dengan tipe UNSIGNED BIGINT dan ‘taggable_type’
dengan tipe data VARCHAR
|
$table->uuidMorphs('taggable');
|
Menambahkan
kolom bernama ‘taggable_id’ dengan tipe CHAR(36) dan ‘taggable_type’ dengan tipe
data VARCHAR(255)
|
$table->multiLineString('positions');
|
Tipe
data MULTILINESTRING
|
$table->multiPoint('positions');
|
Tipe
data MULTIPOINT
|
$table->multiPolygon('positions');
|
Tipe
data MULTIPOLYGON
|
$table->point('position');
|
Tipe
data POINT
|
$table->polygon('positions');
|
Tipe
data POLYGON
|
$table->rememberToken();
|
Menambah
kolom ‘remember_token’ dengan tipe data varchar(100)
|
$table->set('flavors', ['strawberry', 'vanilla']);
|
Mengatur
kategori isi pada suatu kolom
|
$table->smallIncrements('id');
|
Tipe
data INTEGER ukuran small yang Auto-increment
|
$table->smallInteger('votes');
|
Tipe
data INTEGER ukuran small
|
$table->softDeletes('deleted_at', 0);
|
Menambah
kolom ‘delete_at’ dengan tipe data TIMESTAMP
|
$table->softDeletesTz('deleted_at', 0);
|
Menambahkan
kolom ‘delete_at’ dengan tipe data TIMESTAMP yang menggunakan timezone
|
$table->string('name', 100);
|
Tipe
data STRING dengan ukuran text
|
$table->text('description');
|
Tipe
data TEXT
|
$table->time('sunrise', 0);
|
Tipe
data TIME dengan preisis
|
$table->timeTz('sunrise', 0);
|
Tipe
data TIME timezone dengan presisi
|
$table->timestamp('added_on', 0);
|
Tipe
data TIMESTAMP dengan presisi
|
$table->timestampTz('added_on', 0);
|
Tipe
data TIMESTAMP + timezone degan presisi
|
$table->timestamps(0);
|
Menambahkan
2 kolom bernama ‘created_at’ dan ‘updated_at’ dengan Tipe data TIMESTAMP
dengan presisi
|
$table->timestampsTz(0);
|
Menambahkan
2 kolom bernama ‘created_at’ dan ‘updated_at’ dengan Tipe data TIMESTAMP +
timezone dengan presisi
|
$table->tinyIncrements('id');
|
Tipe
data INTEGER ukuran tiny yang Auto-increment
|
$table->tinyInteger('votes');
|
Tipe
data INTEGER ukuran tiny
|
$table->unsignedBigInteger('votes');
|
Tipe
data INTEGER positif ukuran big
|
$table->unsignedDecimal('amount', 8, 2);
|
Tipe
data DECIMAL positif dengan jumlah digit dan jumlah decimal
|
$table->unsignedInteger('votes');
|
Tipe
data INTEGER positif
|
$table->unsignedMediumInteger('votes');
|
Tipe
data INTEGER positif dengan ukuran medium
|
$table->unsignedSmallInteger('votes');
|
Tipe
daa INTEGER positif dengan ukuran small
|
$table->unsignedTinyInteger('votes');
|
Tipe
data INTEGER positif dengan ukuran tiny
|
$table->uuid('id');
|
Tipe
data untuk UUID
|
$table->year('birth_year');
|
Tipe
data YEAR atau tahun
|
Sebagai tambahan, berikut adalah table data
jenis-jenis integer beserta range nya.
Tipe Data
|
Range
|
Max Storage
|
Ukuran
|
Tinyint
|
-128
ke 127
|
255
|
1
byte
|
Smallint
|
-32.768
ke 32.767
|
65.535
|
2
byte
|
Mediumint
|
-8.388.608
ke 8.388.607
|
16.777.215
|
3
byte
|
Integer
|
-2.147.483.648
ke 2.147.483.647
|
4.294.967.295
|
4
byte
|
Bigint
|
-9.223.372.036.854.775.808
ke 9.223.372.036.854.775.807
|
18.446.744.073.709.551.615
|
8
byte
|
Column Modifiers
Column Modifiers adalah perintah yang digunakan
untuk menambah sifat kolom.
Modifier
|
Keterangan
|
->after('column')
|
Meletakan
kolom setelah kolom yang lainnya
|
->autoIncrement()
|
Membuat
kolom tipe Integer jadi Auto-increment
|
->charset('utf8')
|
Mengkhususkan
character set untuk kolom (MYSQL)
|
->collation('utf8_unicode_ci')
|
Mengkhususkan
collation untuk kolom (MYSQL/PostgreSQL/SQL Server)
|
->comment('my comment')
|
Menambahkan
komentar pada kolom
|
->default($value)
|
Membuat
default value untuk suatu kolom
|
->first()
|
Menempatkan
kolom pada urutan pertama pada table
|
->nullable($value = true)
|
Membuat
kolom bisa diisi nilai kosong/NULL
|
->unsigned()
|
Menambahkan
attribute unsigned pada kolom
|
->useCurrent()
|
Membuat
kolom TIMESTAMP menggunakan waktu saat ini sebagai default value
|
Modifying Columns
Daftar perintah ini akan digunakan untuk
mengubah kolom yang sebelumnya sudah dibuat. Sebelum menggunakan perintah ini,
kalian perlu install doctrine/dbal
pada dependencies project kalian.
composer require doctrine/dbal
Perintah ini digunakan untuk merubah jati diri
si kolom, atau dengan kata lain merubah struktur kolom.
Perintah
|
Keterangan
|
->change();
|
Digunakan untuk
mengubah attribute dari kolom.
|
->renameColumn('from', 'to');
|
Mengubah nama kolom
dari ‘from’ ke ‘to’
|
->dropColumn('votes');
|
Menghapus kolom
|
Khusus untuk penggunan ->change(); harus bersamaan dengan ‘Column
Modifiers’. Sebagai contoh
$table->string('name', 50)->nullable()->change();
Pada code diatas artinya atribut ‘nullable’ ditambahkan kedalam kolom
name, yang mengakibatkan sekarang kolom name bisa diisi dengan value NULL.
Creating Index
Mengatur
index suatu kolom. Contoh Index kolom adalah primary key, unique, spatial dll.
Perintah
|
Keterangan
|
$table->primary('id');
|
Membuat
primary key
|
$table->primary(['id', 'parent_id']);
|
Membuat
composite key (2 kolom jadi 1 buat primary key)
|
$table->unique('email');
|
Membuat
unique index
|
$table->index('state');
|
Membuat
index biasa
|
$table->spatialIndex('location');
|
Membuat
spatial index (kecuali SQL Lite)
|
$table->dropPrimary('users_id_primary');
|
Menghapus
primary key dari table users kolom id
|
$table->dropUnique('users_email_unique');
|
Menghapus
unique dari table users kolom email
|
$table->dropIndex('geo_state_index');
|
Menghapus
index biasa dari table geo kolom state
|
$table-> dropSpatialIndex('geo_location_spatialindex');
|
Menghapus
spatial index dari table geo kolom location
|
Itu daftar perintah-perintah laravel yang
sering di pake sama yang ga sering di pake. Kalian ga harus hafal semuanya kok,
karena emang ga bakal kalian pake semua. Kalo misal kalian lupa kan kalian bisa
baca artikel ini lagi hehe…
Buat
yang mau tau cara penggunaaannya bisa baca artikel tentang migration yak…
Tentu saja tidak!!!
Lanjut ga nih guys? Masa
ga kuy?
Komentar
Posting Komentar