Untuk membuat table di laravel kita bisa menggunakan yang namanya migrations, untuk lebih jelasnya bisa dibaca dulu di https://laravel.com/docs/5.8/migrations#introduction.
Setelah database dibuat, selanjutnya adalah membuat migrations untuk masing-masing table. Lokasi migrations ada di dalam folder database -> migrations. Migrations biasanya secara bawaan membuat nama tablenya dengan nama plural/jamak dalam bahasa inggris, jadi biasanya diakhiri dengan huruf 's'. Sebagai contoh, table users adalah hasil dari migrations yang dibuat saat kita membuat authentication pada tutorial sebelumnya.
# Migration users
Sekarang kita fokus ke migrations yang belakangnya ada tulisan create_users_table.php, kita akan menyesuaikan field2nya sesuai dengan kebutuhan kita. Jadi langsung saja, buka file migrations yang belakangnya create_users_table.php (karena angka di depannya beda2, dibuat otomatis berdasarkan waktu kita membuat migrations tersebut) kemudian edit seperti di bawah ini.
<?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('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('phone');//no tlp
$table->text('alamat')->nullable();//alamat
$table->string('role')->default('member');//member non admin
$table->string('foto')->nullable();//foto profil
$table->string('status')->default('aktif');//aktif atau non aktif, customer bisa kita nonaktifkan tanpa menghapus datanya
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
Pada skrip di atas, kita mengubah dan menambahkan beberapa field diantaranya :
# Model User
Setelah kita mengedit migrations, jangan lupa untuk mengedit modelnya. Model adalah file yang akan menjembatani interaksi kita dengan table di database. Sebagai contoh, kita akan melakukan input data ke table users maka kita membuat file model dengan nama User.php biar lebih mudah mengingatnya. Karena model User sudah dibuat secara otomatis saat membuat authentication, maka sekarang kita cukup mengeditnya aja biar sesuai dengan migration yang barusan kita buat.
Lokasi file model ada di dalam folder app, cari dan buka file User.php kemudian kita edit seperti berikut pada bagian fillable-nya.
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'phone', 'alamat', 'role', 'foto', 'status'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
Kalau sudah, langsung kita simpan saja.
# Migrate
Kalau migration dan model sudah selesai kita edit, sekarang kita migrate (istilah untuk mengubah migrations menjadi table) dengan membuat terminal dan jalankan perintah berikut.
php artisan migrate
Prosesnya akan tampak seperti berikut.
Untuk migrate ada beberapa command atau perintah yang lainnya seperti
php artisan migrate:rollback
*Untuk menarik migrations yang barusan kita buat (otomatis menghapus table yang barusan dibuat)
php artisan migrate:refresh
*Untuk menjalankan migrate kembali setelah dilakukan kita mengedit file migrationsnya. Semisal kita menghapus atau menambahkan field maka kita harus menjalankan perintah tersebut untuk mengubah table di database.
Untuk setting role user sampai disini, pada tutorial selanjutnya kita akan berkenalan dengan yang namanya seeder (https://laravel.com/docs/5.8/seeding#introduction)