}
Menghapus tabel ~3
Sementara itu, untuk menghapus tabel kita bisa menggunakan method dari Schema Builder yaitu drop() dan dropIfExists(), ingat kita memakai fungsi ini pada method down() dari file class Migration kita
//File 2018_03_19_074052_create_products_table.php public function down()
{
// Drop tabel jika tabel products ditemukan Schema::dropIfExists('products');
}
Operasi untuk Column ~3
Sebelumnya kita telah belajar untuk membuat fields untuk tabel dengan method increments(“nama_column”) dan timestamps() untuk membuat field created_at dan updated_at. Tentu kita membutuhkan lebih banyak method untuk memanipulasi column dari tabel kita. Kabar baiknya Schema Builder telah menyediakan banyak method yang bisa kita pakai, antara lain:
Perintah / Method Penjelasan
$table->bigIncrements('id'); Buat column bertipe auto-increment UNSIGNED BIGINT (primary key) dengan nama “id”
$table->bigInteger('votes'); Buat bertipe BIGINT dengan nama “votes”
$table->binary('data'); Buat column bertipe BLOB dengan nama “data”.
$table->boolean('confirmed'); Buat column bertipe BOOLEAN dengan nama “confirmed”.
$table->char('name', 100); Buat column bertipe CHAR dengan panjang (length) 100. Paramter kedua yaitu length bersifat opsional.
$table->date('created_at'); Buat column bertipe DATE dengan nama “created_at”.
$table->dateTime('created_at'); Buat column bertipe DATETIME dengan nama “created_at”.
$table->dateTimeTz('created_at'); Buat column bertipe DATETIME (dengan timezone) bernama
“created_at”
$table->decimal('amount', 8, 2);
Buat column bertipe DECIMAL dengan nama “amount”. Parameter kedua merupakan total digits (presisi), dan parameter ketiga adalah decimal digits (decimal digit).
$table->double('amount', 8, 2); Buat column bertipe DOUBLE dengan presisi 8 dan decimal digits 2 bernama “amount”.
$table->enum('level', ['easy', 'hard']);
Buat column bertipe ENUM dengan nama “level” dan dua opsi yaitu
“easy” dan “hard”.
Perintah / Method Penjelasan
$table->float('amount', 8, 2);
Buat column bertipe FLOAT dengan presisi 8 dan decimal digits 2.
$table->geometry('positions'); Buat column bertipe setara dengan GEOMETRY bernama
“positions”
$table->geometryCollection('positions');
Buat column bertipe setara dengan GEOMERYCOLLECTION bernama
$table->increments('id'); Buat column bertipe setara dengan UNSIGNED INTEGER (primary
$table->integer('votes'); Buat column bertipe setara INTEGER bernama “votes”
$table->ipAddress('visitor'); Buat column bertipe seperti alamat IP bernama visitor.
$table->json('options'); Buat column bertipe seperti JSON bernama “options”.
$table->jsonb('options'); Buat column bertipe seperti JSONB bernama “options”.
$table->lineString('positions'); Buat column bertipe seperti LINESTRING bernama “positions”.
$table->longText('description'); Buat column bertipe seperti / setara dengan LONGTEXT bernama
$table->macAddress('device'); Buat column bertipe seperti / setara dengan MAC Address
$table->mediumIncrements('id'); Buat column bertipe setara UNSIGNED MEDIUMINT (primary key)
$table->mediumInteger('votes'); Buat column bertipe setara dengan MEDIUMINT bernama “votes”.
$table->mediumText('description'); Buat column bertipe setara dengan MEDIUMTEXT bernama
$table->morphs('taggable'); Menyisipkan column “taggable_id” dengan tipe setara UNSIGNED
$table->multiLineString('positions'); Buat column bertipe MULTILINESTRING bernama “positions”.
$table->multiPoint('positions'); Buat column bertipe setara MULTIPOINT bernama “positions”.
$table->multiPolygon('positions'); Buat column bertipe MULTIPOLYGON bernama “positions”.
$table->nullableMorphs('taggable'); Sisipkan attribute nullable untuk column morphs().
$table->nullableTimestamps(); Nama lain (alias) untuk timestamps().
$table->point('position'); Buat column bertipe setara POINT dengan nama “position”
$table->polygon('positions'); Buat column bertipe seperti POLYGON bernama “positions”.
$table->rememberToken(); Sisipkan column nullable bertipe VARCHAR(100) dengan nama
$table->smallIncrements('id'); Buat column bertipe setara UNSIGNED SMALLINT (primary key)
Perintah / Method Penjelasan
$table->smallInteger('votes'); Buat column bertipe SMALLINT bernama “votes”.
$table->softDeletes(); Tambahkan column “deleted_at” bertipe TIMESTAMP dan memiliki
$table->softDeletesTz(); Sama seperti softDeletes() tetapi dengan timezone.
$table->string('name', 100); Buat column bertipe setara VARCHAR dengan panjang (length)
$table->text('description'); Buat column bertipe TEXT dengan nama “description”.
$table->time('sunrise'); Buat column bertipe TIME bernama “sunrise”.
$table->timeTz('sunrise'); Buat column bertipe TIME (dengan timezone) bernama “sunrise”.
$table->timestamp('added_on'); Buat column bertipe setara TIMESTAMP bernama “added_on”.
$table->timestampTz('added_on'); Buat column bertipe setara TIMESTAMP (dengan timezone)
$table->timestamps(); Buat column untuk timestamps, yaitu column “created_at” dan
$table->timestampsTz(); Sama seperti timestamps() tetapi menyertakan timezone
$table->tinyIncrements('id'); Buat column bertipe setara UNSIGNED TINYINT (primary key)
$table->tinyInteger('votes'); Buat column bertipe setara TINYINT bernama “votes”.
$table->unsignedBigInteger('votes');
Buat column bertipe setara UNSIGNED BIGINT dengan nama
“votes”
$table->unsignedDecimal('amount', 8, 2);
Buat column bertipe UNSIGNED DECIMAL dengan presisi 8 dan
$table->unsignedInteger('votes'); Buat column bertipe setara UNSIGNED INTEGER bernama “votes”.
$table->unsignedMediumInteger('votes');
Buat column bertipe setara UNSIGNED MEDIUMINT bernama
“votes”.
$table->unsignedSmallInteger('votes'); Buat column bertipe setara UNSIGNED SMALLINT bernama “votes”.
$table->unsignedTinyInteger('votes'); Buat column bertipe setara UNSIGNED TINYINT bernama “votes”.
$table->uuid('id'); Buat column bertipe setara UUID dengan nama “id”
$table->year('birth_year'); Buat column bertipe setara YEAR dengan nama “birth_year”.
Column Modifiers ~3
Selain kita bisa menentukan tipe data dari column, dengan schema builder kita juga bisa mengubah / menambah perilaku dari column tersebut. Misalnya, membuat column menjadi nullable, menambahkan column setelah column tertentu. Kemampuan untuk melakukan hal itu disebut dengan modifier, apa saja column modifier yang tersedia pada Schema Builder, mari kita lihat:
1 2 3 4 5 6 7 8 9 10
1
Modifier Penjelasan
->after('email') Letakkan column yang akan dibuat setelah column “email”
->autoIncrement() Set column bertipe INTEGER agar menjadi auto-increment (primary key) ->charset('utf8') Tentukan charset utf8 untuk column (MySQL).
->collation('utf8_unicode_ci')
Tentukan collation utf8_unicode_ci untuk sebuah column (MySQL / SQL Serv
->comment('my comment') Tambah komentar untuk column (MySQL) ->default($value) Tentukan nilai default untuk column.
->first() Letakkan column sebagai urutan pertama dalam ->nullable($value = true) Izinkan nilai NULL untuk dimasukan ke column ->storedAs($expression) Buat stored generated column (MySQL)
->unsigned() Jadikan column INTEGER sebagain UNSIGNED (MySQL)
->useCurrent() Jadikan column bertipe TIMESTAMP untuk menggunakan CURRENT_TIMESTAMP sebagai nilai default.
->virtualAs($expression) Buat virtual generated column (MySQL)
Demikian beberapa column modifier yang tersedia, cara pakainya adalah seperti ini. Misalkan kita mau membuat column email, kita ingin meletakkannya setelah column password, dan mau kita beri komentar.
Maka pada migration kita tuliskan seperti ini File migration
public function up() {
Schema::create(“users”, function(Blueprint $table){
$table->increments();
// begini cara pakai modifier
$table->string(“email”,
255)->after(“password”)->comment(“Email pengguna utama pengguna”);
}) }