Tempat tertimbunnya tulisan - tulisan akibat kejangaran ngoding

06 October 2018

Membuat Model dan Seeder di Laravel

Assalamualaikum wr wb.
Kali ini saya akan menulis tentang cara membuat model dan seeder di Laravel. Sebelumnya, pastikan laravel sudah terinstall di server teman-teman ya. Jika belum, silahkan lihat caranya di artikel sebelumnya yaitu Cara Install Laravel Terbaru.

Pada tutorial kali ini saya menggunakan Laravel 5.7.8 untuk membuat model dan seeder ini.


Langkah 1:
Kita akan membuat model via artisan. Pertama, masuk dahulu kedalam folder projek laravel. kemudian ketikan perintah berikut:

php artisan make:model Student -m
kode diatas akan menghasilkan file model bernama Student dan dan file migration untuk membuat table students.

kemudian edit file migration yang kita buat tadi. Biasanya terletak di /database/migration/tanggal_pembuatan_create_students_table. File migration ini akan otomatis membuat nama file menggunakan tanggal migration tersebut dibuat. Ubah file tersebut menjadi seperti berikut.


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

class CreateStudentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('students', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name', 50)->nullable(false);
            $table->string('last_name', 50)->nullable(true);
            $table->enum('gender', ['male','female']);
            $table->string('email', 50)->unique();
            $table->string('phone_number', 50)->nullable(false);
            $table->string('address', 255);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('students');
    }
}
Kode diatas berfungsi untuk mendefinisikan field-field apa saja yang akan dibuat dalam tabel students. Jika sudah selesai dengan file migrationnya silahkan ketikan perintah berikut:

php artisan migrate
Setelah menjalankan perintah tersebut maka akan langsung dibuat tabel bernama students di database.

Langkah 2:
Setelah tabelnya terbentuk maka selanjutnya kita akan mengisi tabel tersebut dengan data dummy menggunakan Model Factory. Untuk mengisi data dummy tersebut saya menggunakan package bernama faker. Untuk membuatnya ketikan perintah berikut:

php artisan make:factory StudentFactory
Perintah di atas akan menghasil sebuah file bernama StudentFactory.php yang berada di /database/factories/. Kemudian ubah file tersebut menjadi seperti berikut.


use Faker\Generator as Faker;

$factory->define(\App\Student::class, function (Faker $faker) {
    $gender = $faker->randomElement($array = array ('male', 'female'));
    return [
        'first_name' => $faker->firstName($gender),
        'last_name' => $faker->lastName,
        'email' => $faker->email,
        'phone_number' => $faker->phoneNumber,
        'gender' => $gender,
        'address' => $faker->address,
    ];
});

Kemudian kita akan membuat file seedernya. Ketikan perintah berikut ini.

php artisan make:seeder StudentsTableSeeder
Perintah tersebut akan menghasilkan file seeder bernama StudentsTableSeeder yag berada di /database/seeds/. Kemudian ubah isi file tersebut menjadi seperti berikut ini.

use Illuminate\Database\Seeder;

class StudentsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(\App\Student::class, 30)->create();
    }
}
30 adalah jumlah data dummy yang akan kita masukkan kedalam table students “masing masing data itu isinya apa?” masing masing yang akan diinsert sudah digenerate secara random dan otomatis oleh Faker, yang merupakan fungsi Model Factory tadi.

Kemdian kita harus memanggil seeder ini dari datbase/seeds/DatabaseSeeder.php pada method run yang ada pada file tersebut.


use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
        $this->call(StudentsTableSeeder::class);
    }
}

Jika semua sudah siap, lalu jalan seedernya dengan menggunakan perintah:

php artisan db:seed

Jika tidak ada error maka tabel students tadi sekarang akan terisi data sebanyak 30 baris. Berhasil?

Selanjutnya kita akan belajar tentang bagaimana membuat API dari tabel yang telah kita buat ini. Sampai bertemu di tutorial selanjutnya ;)

No comments:

Post a Comment