Membuat Project Baru Laravel di Windows

Cara membuat project baru Laravel di Windows dan pengaturan awalnya

Instalasi

composer create-project laravel/laravel nama-project
  • Laravel akan ter-install di folder nama-project

Pengaturan .env

APP_URL=http://namaproject.test

DB_DATABASE=namadatabase
DB_USERNAME=root
DB_PASSWORD=
  • APP_URL di set jika menggunakan virtual host, jika tidak biarkan default nya localhost

Timezone

Ubah timezone (jika perlu) di config/app.php

'timezone' => 'Asia/Jakarta'

Menjalankan aplikasi

php artisan serve

Atau jika menggunakan virtual host bisa langsung akses di browser dengan alamat yang di set di APP_URL

Migration

Di folder app/database/migrations ada beberapa file migration, hapus yang sekiranya tidak diperlukan, dan sisakan file migration untuk create_users_table

php artisan migrate
php artisan migrate:fresh
php artisan migrate:rollback
php artisan migrate:refresh
  • fresh untuk menghapus semua tabel di database dan melakukan migrate ulang
  • rollback untuk membatalkan migration terakhir
  • refresh untuk rollback semua migration dan melakukan migrate ulang

Saat menjalankan migration, cek di database apakah ada table personal_access_token atau tidak, jika ada dan tidak mau menggunakan atau mau menghapus nya, edit file app/Providers/AppServiceProvider.php

public function register(): void
{
    Sanctum::ignoreMigrations();
}

Lakukan migrate ulang dengan fresh maka table personal_access_token tidak akan ada lagi

Membuat file migration baru

php artisan make:migration create_produk_table

Nama file bisa bebas, tapi kalau di dalam nama file ada kata kunci create dan nama tabel nya, Laravel akan otomatis membuat migration untuk create table

Contoh schema untuk tabel dengan foreign key

Schema::create('mentor', function (Blueprint $table) {
    $table->id();
    $table->string('nama', 50);
    $table->string('tempat_lahir', 50);
    $table->date('tanggal_lahir');
    $table->string('alamat', 100);
    $table->string('no_hp', 15);
    $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
    $table->timestamps();
});
  • timestamps() opsional, jika tidak ingin ada atribut created_at dan updated_at maka bisa dihapus

Contoh model user

class User extends Authenticatable
{
    protected $table = 'users';
    protected $primaryKey = 'id';
    protected $guarded = ['id'];
    public $timestamps = true;

    // contoh relasi belong to
    public function customer()
    {
        return $this->belongsTo(Customer::class);
    }

    // contoh relasi has many
    public function pembayaran()
    {
        return $this->hasMany(Pembayaran::class);
    }
}
  • $guarded digunakan sebagai kebalikan dari $fillable, jadi semua bisa diisi kecuali atribut id
  • $fillable bisa digunakan untuk memilih atribut mana saja yang bisa diisi
  • $timestamps bisa di set ke false jika tidak digunakan

Contoh seeder untuk bikin user pertama

File: database/seeders/DatabaseSeeder.php

public function run(): void
{
    User::create([
        'nama' => 'Administrator',
        'username' => 'admin',
        'password' => password_hash('admin', PASSWORD_DEFAULT),
    ]);
}

Menjalankan seeder

php artisan db:seed