Membuat Project Laravel
Kedepan kita akan banyak menggunakan terminal untuk mengeksekusi perintah-perintah php, composer dll. Ada 3 terminal yang dapat kita gunakan, yaitu :
- Terminal bawaan windows (Terminal, Command Prompt)
- Terminal Laragon
- Terminal Visual Studio Code
Sebelum memulai pembuatan project, buka aplikasi laragon kemudian klik tombol 'Start All' untuk menjalankan web server Apache dan database server MySQL. Step ini berlaku disetiap kita akan memulai pengerjaan / Coding kedepannya. Setelah itu buka terminal laragon pastikan bahwa posisi kursor atau direktori di terminal ada di c:\laragon\www. Kemudian ketikkan perintah :
composer create-project laravel/laravel project-pertama-ku
Disaat perintah diatas dijalankan maka komputer kita akan membuat project laravel dan mendownload file-file yang dibutuhkan dan akan mengumpulkan ke dalam satu folder project kita di c:\laragon\www\project-pertama-ku. Tunggu hingga proses download dan eksekusi perintah selesai dijalankan semua. Biasanya terminal akan seperti berikut:
cd project-pertama-ku
php artisan serve
Pada modul pertama ini kita akan berfokus pada pembuatan aplikasi backend. Kita akan bekerja sesuai dengan konsep MVC (Model, View, Controller) yang sudah dijelaskan sebelumnya. Acuan kita adalah rancangan yang ada pada ERD dan DFD yang telah kita siapkan sebelumnya. Sebelum kita mulai bekerja dengan konsep MVC, maka silahkan buka project kita di Visual Studio Code. Buka Visual Studio Code, jika ada project yang terbuka maka silahkan ditutup terlebih dahulu, kemudian pada VS Code silahkan pilih Open Folder dan arahkan ke project kita tadi yang ada di c:\laragon\www\project-pertamaku.
Model & Migration
Langkah pertama dalam konsep MVC di laravel kita akan membuat model terlebih dahulu. Model ini kita ambil dan sesuaikan dengan tabel-tabel yang ada di erd atau perancangan database kita sebelumnya. Kemudian pada laravel ada yang namanya migration, yaitu file php yang ketika dieksekusi akan menjalankan perintah ke database untuk membuat tabel, mengubah dan menghapusnya tanpa harus kita masuk ke databasenya secara langsung.
Mari kita analisa dan kita urutkan Model-model yang ada dalam project kita, yaitu :
- User
- Mahasiswa
- Kategori Blog
- Kategori Event
- Kategori Karya Ilmiah
- Tag
- Organisasi
- Sambutan
- Partner
- Periode
- Kepengurusan
- Blog
- Blog Tag
- Blog Dilihat per Tanggal
- Event
- Karya Ilmiah
Setelah kita memastikan bahwa model diatas sudah sesuai dan tidak ada perubahan lagi, maka kita buat model dan migration pada project laravel kita. Silahkan buka terminal pada VS Code kita dengan menekan di keyboard tombol Ctrl+` atau dengan klik menu diatas yang bernama Terminal->New Terminal jika berhasil akan seperti gambar dibawah ini :
php artisan make:model Mahasiswa -m
Biasanya model user itu sudah ada dibuatkan oleh laravel pada saat diawal kita membuat project. Jadi untuk proses pembuatan model User kita abaikan. Diatas kita memiliki 16 model, model user diabaikan maka tersisa 15 model. Jalankan perintah diatas sebanyak jumlah model kita dan sesuaikan nama-nama model dengan ketentuan hapus spasi jika memiliki 2 kata lebih dalam nama modelnya. Misalnya untuk model Kategori blog, maka silahkan ketikkan perintah berikut untuk membuat modelnya :
php artisan make:model KategoriBlog -m
-m pada akhir perintah diatas adalah perintah untuk membuat file migration. Berikut bentuk tampilan terminal VS Code setelah menjalankan perintah diatas :
Setting file .env
Silahkan cari nama file .env pada project anda.
APP_NAME="Applikasi Backend Pertamaku" APP_URL=http://localhost:8000 APP_LOCALE=id APP_FALLBACK_LOCALE=id APP_FAKER_LOCALE=id_ID DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=project_pertama_ku DB_USERNAME=root DB_PASSWORD=
Sisanya biarkan saja seperti bawaan awalnya, jangan dihapus. Jangan lupa disimpan setelah diubah menjadi seperti diatas.
Membuat Database (Tabel dan Relasinya) Menggunakan Fitur Migration yang Ada pada Laravel.
Sebelumnya kita sudah membuat model, dalam perintah pembuatan model ada juga perintah untuk membuat file migration. Dalam project ini setiap model merupakan representasi tabel yang ada di database. Sebelum file migration kita jalankan untuk membuat database, kita perlu menentukan isi tabel berupa kolom, tipe data dan relasinya pada file migration. Silahkan buka dan ubah isi dari file-file migration sebagai berikut : (lokasi file ada di : database\migrations\)
1. File migration User
Nama file : ..._create_users_table.php
Berikut tampilan pada VSCode :
return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });
Ubah menjadi :
return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->enum('is_admin',['Ya','Tidak'])->default('Tidak'); $table->enum('is_pengurus',['Ya','Tidak'])->default('Tidak'); $table->string('avatar_url')->nullable(); $table->rememberToken(); $table->timestamps(); });
2. File migration Mahasiswa
Nama file : ..._create_mahasiswas_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('mahasiswas', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('mahasiswas', function (Blueprint $table) { $table->id(); $table->string('nim')->unique(); $table->string('nama'); $table->string('slug'); $table->enum('jenis_kelamin',['Laki-laki','Perempuan'])->default('Laki-laki'); $table->year('angkatan'); $table->mediumText('profil')->nullable(); $table->string('facebook'); $table->string('instagram'); $table->string('twitter'); $table->string('youtube'); $table->foreignId('user_id')->constrained('users')->cascadeOnDelete(); $table->timestamps(); }); }
3. File migration Kategori Blog
Nama file : ..._create_kategori_blogs_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kategori_blogs', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kategori_blogs', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->string('slug'); $table->string('keterangan'); $table->timestamps(); }); }
4. File migration Kategori Event
Nama file : ..._create_kategori_events_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kategori_events', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kategori_events', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->string('slug'); $table->string('keterangan'); $table->timestamps(); }); }
5. File migration Kategori Karya Ilmiah
Nama file : ..._create_kategori_karya_ilmiahs_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kategori_karya_ilmiahs', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kategori_karya_ilmiahs', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->string('slug'); $table->string('keterangan'); $table->timestamps(); }); }
6. File migration Tag
Nama file : ..._create_tags_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('tags', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('tags', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->string('slug'); $table->string('keterangan'); $table->timestamps(); }); }
7. File migration Organisasi
Nama file : ..._create_organisasis_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('organisasis', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('organisasis', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->string('slug'); $table->mediumText('profil')->nullable(); $table->string('visi'); $table->mediumText('misi')->nullable(); $table->mediumText('sejarah')->nullable(); $table->mediumText('filosofi')->nullable(); $table->mediumText('arti_logo')->nullable(); $table->string('logo'); $table->string('gambar_struktur')->nullable(); $table->enum('status',['Aktif','Non Aktif'])->default('Aktif'); $table->timestamps(); }); }
8. File migration Sambutan
Nama file : ..._create_sambutans_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('sambutans', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('sambutans', function (Blueprint $table) { $table->id(); $table->string('pemberi_sambutan'); $table->string('slug'); $table->mediumText('isi')->nullable(); $table->string('foto'); $table->foreignId('organisasi_id')->constrained('organisasis')->cascadeOnDelete(); $table->timestamps(); }); }
9. File migration Partner
Nama file : ..._create_partners_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('partners', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('partners', function (Blueprint $table) { $table->id(); $table->string('nama'); $table->string('slug'); $table->string('logo'); $table->string('url')->nullable(); $table->foreignId('organisasi_id')->constrained('organisasis')->cascadeOnDelete(); $table->timestamps(); }); }
10. File migration Periode
Nama file : ..._create_periodes_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('periodes', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('partners', function (Blueprint $table) { $table->id(); $table->string('sk'); $table->string('nama'); $table->string('slug'); $table->year('tahun1'); $table->year('tahun2'); $table->date('tanggal_mulai'); $table->date('tanggal_selesai'); $table->enum('status',['Aktif','Non Aktif'])->default('Aktif'); $table->foreignId('organisasi_id')->constrained('organisasis')->cascadeOnDelete(); $table->timestamps(); }); }
11. File migration Kepengurusan
Nama file : ..._create_kepengurusans_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kepengurusans', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('kepengurusans', function (Blueprint $table) { $table->id(); $table->foreignId('organisasi_id')->constrained('organisasis')->cascadeOnDelete(); $table->foreignId('mahasiswa_id')->constrained('mahasiswas')->cascadeOnDelete(); $table->string('jabatan'); $table->string('slug'); $table->text('detail_jabatan')->nullable(); $table->tinyInteger('level1')->default(0); $table->tinyInteger('level2')->default(0); $table->tinyInteger('level3')->default(0); $table->timestamps(); }); }
12. File migration Blog
Nama file : ..._create_blogs_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('blogs', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('blogs', function (Blueprint $table) { $table->id(); $table->foreignId('kategori_blog_id')->constrained('kategori_blogs')->cascadeOnDelete(); $table->foreignId('mahasiswa_id')->constrained('mahasiswas')->cascadeOnDelete(); $table->string('judul'); $table->string('slug'); $table->text('isi_singkat')->nullable(); $table->mediumText('isi_lengkap')->nullable(); $table->string('thumbnail')->nullable(); $table->string('file')->nullable(); $table->string('youtube_url')->nullable(); $table->integer('dilihat')->default(0); $table->integer('trending')->default(0); $table->enum('featured',['Ya','Tidak'])->default('Tidak'); $table->enum('status',['Draft','Published'])->default('Draft'); $table->timestamps(); }); }
13. File migration Blog Tag
Nama file : ..._create_blog_tags_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('blog_tags', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('blog_tags', function (Blueprint $table) { $table->id(); $table->foreignId('blog_id')->constrained('blogs')->cascadeOnDelete(); $table->foreignId('tag_id')->constrained('tags')->cascadeOnDelete(); $table->timestamps(); }); }
14. File migration Blog Dilihat per Tanggal
Nama file : ..._create_blog_dilihat_per_tanggals_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('blog_dilihat_per_tanggals', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('blog_tags', function (Blueprint $table) { $table->id(); $table->foreignId('blog_id')->constrained('blogs')->cascadeOnDelete(); $table->date('tanggal'); $table->integer('dilihat')->default(0); $table->timestamps(); }); }
15. File migration Event
Nama file : ..._create_events_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('events', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('events', function (Blueprint $table) { $table->id(); $table->foreignId('kategori_event_id')->constrained('kategori_events')->cascadeOnDelete(); $table->foreignId('mahasiswa_id')->constrained('mahasiswas')->cascadeOnDelete(); $table->string('judul'); $table->string('slug'); $table->date('tanggal_mulai'); $table->date('tanggal_selesai'); $table->text('isi_singkat')->nullable(); $table->mediumText('isi_lengkap')->nullable(); $table->string('thumbnail')->nullable(); $table->string('file')->nullable(); $table->integer('dilihat')->default(0); $table->timestamps(); }); }
16. File migration Karya Ilmiah
Nama file : ..._create_karya_ilmiahs_table.php
Cari coding berikut :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('karya_ilmiahs', function (Blueprint $table) { $table->id(); $table->timestamps(); }); }
Ubah menjadi :
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('karya_ilmiahs', function (Blueprint $table) { $table->id(); $table->foreignId('kategori_karya_ilmiah_id')->constrained('kategori_karya_ilmiahs')->cascadeOnDelete(); $table->foreignId('mahasiswa_id')->constrained('mahasiswas')->cascadeOnDelete(); $table->string('judul'); $table->string('slug'); $table->text('isi_singkat')->nullable(); $table->mediumText('isi_lengkap')->nullable(); $table->string('thumbnail')->nullable(); $table->string('file')->nullable(); $table->integer('dilihat')->default(0); $table->timestamps(); }); }
Pastikan semua nama kolom, tipe data hingga relasi tabel(foreign key) sudah benar. Harap diperhatikan bahwa bahasa pemrograman php adalah case sensitive, yaitu perbedaan huruf besar dan kecil itu berpengaruh terhadap syntax yang dituliskan, jika salah satu huruf saja maka bisa menyebabkan error pada coding keseluruhan.
Selanjutnya kita akan eksekusi file-file migrasi yang telah kita buat tadi. Buka kembali terminal di VS Code dengan cara klik menu View-> Terminal kemudian ketikkan perintah berikut :
php artisan migrate
Jika database project kita belum ada di server maka akan muncul peringatan : "Database project_pertama_ku does not exist on mysql connection. would you like to create it? (yes/no)"
Maka ketikkan yes agar database dibuat dan file migrasi dieksekusi satu persatu untuk membuat table-table.
Jika berhasil akan muncul seperti berikut :
Silahkan dicek di database mysql kita apakah sudah ada tabel-tabel.
Membuat Relasi Database Pada Model Laravel.
Pada file migration yang telah kita modifikasi sebelumnya kita akan menemukan coding seperti berikut :
$table->foreignId('user_id')->constrained('users')->cascadeOnDelete();
Ini menandakan bahwa tabel ini memiliki relasi ke tabel users yang disimpan pada kolom user_id. Pada database kita sudah ada relasi antar tabel, namun untuk project laravel kita, relasi-relasi tersebut harus didefinisikan di model-model kita agar ketika mengambil dan memasukkan data ke database model ini dapat mengenali relasi yang ada sehingga ketika dijalankan query ke database tidak akan mengalami error.
Tidak semua model memiliki relasi, tetapi yang memiliki foreignId atau foreign key saja. Dalam Database relasional kita mengenali relasi dengan istilah berikut (diikuti istilah dalam laravel):
- One to One : hasOne
- One to Many : hasMany
- Many to One : belongsTo
- Many to Many : belongsToMany
Silahkan telusuri file migration dan temukan relasi-relasi tersebut. Kemudian kita membuat relasi pada model kita sebagai berikut :
1. Relasi Pada Model Mahasiswa
Tabel mahasiswa di database memilki relasi one to one ke tabel user. Silahkan buka file model mahasiswa yang berada di app\Models\Mahasiswa.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Mahasiswa extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasOne; class Mahasiswa extends Model { public function user(): HasOne { return $this->hasOne(User::class); } }
jika kita menemukan pesan error atau coding kita ditandai baris bawah berwarna merah seperti ini :
Tabel kategori blog di database memilki relasi one to many ke tabel blog. Silahkan buka file model Kategori Blog yang berada di app\Models\KategoriBlog.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class KategoriBlog extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class KategoriBlog extends Model { public function blogs(): HasMany { return $this->hasMany(Blog::class); } }
3. Relasi Pada Model Kategori Event
Tabel kategori event di database memilki relasi one to many ke tabel event. Silahkan buka file model Kategori Event yang berada di app\Models\KategoriEvent.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class KategoriEvent extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class KategoriBlog extends Model { public function blogs(): HasMany { return $this->hasMany(Blog::class); } }
4. Relasi Pada Model Kategori Karya ilmiah
Tabel kategori karya ilmiah di database memilki relasi one to many ke tabel event. Silahkan buka file model Kategori Karya ilmiah yang berada di app\Models\KategoriKaryaIlmiah.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class KategoriKaryaIlmiah extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class KategoriKaryaIlmiah extends Model { public function karya_ilmiahs(): HasMany { return $this->hasMany(KaryaIlmiah::class); } }
5. Relasi Pada Model Tag
Tabel tag di database memilki relasi many to many ke tabel blog. Silahkan buka file model Tag yang berada di app\Models\Tag.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Tag extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Tag extends Model { public function blogs(): BelongsToMany { return $this->belongsToMany(Blog::class, 'blog_tags')->withTimestamps(); } }
6. Relasi Pada Model Organisasi
Silahkan buka file model Organisasi yang berada di app\Models\Organisasi.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Organisasi extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class Organisasi extends Model { public function sambutans(): HasMany { return $this->hasMany(Sambutan::class); } public function partners(): HasMany { return $this->hasMany(Partner::class); } public function periodes(): HasMany { return $this->hasMany(Periode::class); } }
7. Relasi Pada Model Sambutan
Silahkan buka file model Sambutan yang berada di app\Models\Sambutan.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Sambutan extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Sambutan extends Model { public function organisasi(): BelongsTo { return $this->belongsTo(Organisasi::class); } }
8. Relasi Pada Model Partner
Silahkan buka file model Partner yang berada di app\Models\Partner.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Partner extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Pertner extends Model { public function organisasi(): BelongsTo { return $this->belongsTo(Organisasi::class); } }
9. Relasi Pada Model Periode
Silahkan buka file model Partner yang berada di app\Models\Periode.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Periode extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Periode extends Model { public function organisasi(): BelongsTo { return $this->belongsTo(Organisasi::class); } public function mahasiswas(): HasMany { return $this->hasMany(Mahasiswa::class); } }
10. Relasi Pada Model Blog
Silahkan buka file model Blog yang berada di app\Models\Blog.php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Blog extends Model { // }
Modifikasi menjadi :
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Blog extends Model { public function mahasiswa(): BelongsTo { return $this->belongsTo(Mahasiswa::class); } public function kategori_blog(): BelongsTo { return $this->belongsTo(KategoriBlog::class); } public function blog_dilihat_per_tanggals(): HasMany { return $this->hasMany(BlogDilihatPerTanggal::class); } public function tags(): BelongsToMany { return $this->belongsToMany(tag::class, 'blog_tags')->withTimestamps(); } }
Modul I telah selesai dan silahkan diulang-ulang kembali, dibaca-baca dan dipahami dengan seksama step by step yang kita lakukan tadi. Pembahasan selanjutnya adalah membuat form-form input data sesuai dengan model yang ada ke dalam database menggunakan Filament.
Terimakasih ...