Untuk melihat hasil dari script yang telah kita buat, buka halaman http://localhost:8000/posts pada browser, maka akan tampil seperti gambar di bawah ini: Gambar 33 : Halaman Tampil Data Posts 51 Eloquent: Relationship (Many-to-Many) Buat tiga buah table di dalam database dblaravel, yaitu table siswa, hobi dan hobi_siswa Langkah pertama, ketikkan perintah artisan berikut ini: php artisan make:migration create_siswa_table --create=siswa Buka folder laravelapp\\database\\migrations. Buka file yang namanya mengandung create_siswa_table.php. Selanjutnya, ketikkan script berikut ini: <?php use Illuminate\\Support\\Facades\\Schema; use Illuminate\\Database\\Schema\\Blueprint; use Illuminate\\Database\\Migrations\\Migration; class CreateSiswaTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental
Schema::create('siswa', function (Blueprint $table) { 52 $table->bigIncrements('id'); $table->string('nama'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('siswa'); } } Jalankan migration dengan mengetikkan perintah: php artisan migrate selanjutnya, ketikkan perintah pada command prompt php artisan make:migration create_hobi_table --create=hobi Lanjutkan dengan menulis script pada file yang namanya mengandung create_hobi_table.php. <?php use Illuminate\\Support\\Facades\\Schema; use Illuminate\\Database\\Schema\\Blueprint; use Illuminate\\Database\\Migrations\\Migration; class CreateHobiTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('hobi', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('nama_hobi'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental
Schema::dropIfExists('hobi'); } } Jalankan kembali migration dengan mengetikkan perintah: php artisan migrate langkah selanjutnya, kita perlu membuat table ketiga yang berperan sebagai pivot table. ketikkan perintah pada command prompt php artisan make:migration create_hobi_siswa_table --create=hobi_siswa Lanjutkan dengan menulis script pada file yang namanya mengandung create_hobi_siswa _table.php. <?php use Illuminate\\Support\\Facades\\Schema; use Illuminate\\Database\\Schema\\Blueprint; use Illuminate\\Database\\Migrations\\Migration; class CreateHobiSiswaTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('hobi_siswa', function (Blueprint $table) { $table->bigIncrements('id'); $table->biginteger('siswa_id')->unsigned(); $table->foreign('siswa_id') ->references('id')->on('siswa') ->onDelete('cascade') ->onUpdate('cascade'); $table->biginteger('hobi_id')->unsigned(); $table->foreign('hobi_id') ->references('id')->on('hobi') ->onDelete('cascade') ->onUpdate('cascade'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('hobi_siswa'); indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental 53
} } Jalankan kembali migration dengan mengetikkan perintah: php artisan migrate Isikan data siswa lewat PHPMyAdmin Gambar 34 : Sample data siswa Isikan data hobi lewat PHPMyAdmin Gambar 35 : Sample data hobi indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental 54
Isikan data hobi_siswa lewat PHPMyAdmin Gambar 36 : Sample data hobi_siswa 55 Buat file model untuk siswa php artisan make:model Siswa Buka file laravelapp\\app\\Siswa.php, tuliskan script berikut: <?php namespace App; use Illuminate\\Database\\Eloquent\\Model; class Siswa extends Model { protected $table = \"siswa\"; public function hobi() { return $this->belongsToMany('App\\Hobi'); } } Buat file model untuk hobi php artisan make:model Hobi Buka file laravelapp\\app\\Hobi.php, tuliskan script berikut: <?php namespace App; use Illuminate\\Database\\Eloquent\\Model; indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental
class Hobi extends Model { protected $table = \"hobi\"; public function siswa() { return $this->belongsToMany('App\\Siswa'); } } Buat route baru untuk halaman hobi Route::get('hobi', 'HobiController@index'); Buat controller baru dengan nama PenggunaController.php php artisan make:controller HobiController Ketikkan script berikut dengan memberikan method / fungsi index pada laravelapp\\app\\Http\\Controllers\\HobiController.php <?php namespace App\\Http\\Controllers; use Illuminate\\Http\\Request; use App\\Siswa; use App\\Hobi; class HobiController extends Controller { public function index() { $siswa = Siswa::all(); return view('siswa.index', ['siswa' => $siswa]); } } Langkah berikutnya, buat sub-folder siswa di dalam folder laravelapp\\resources\\views Buat script halaman view berikut di dalam folder siswa. Halaman Tampil Data (index.blade.php) <!DOCTYPE html> <html> <head> <title>Relasi Many To Many</title> <!-- Bootstrap core CSS --> <link href=\"{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}\" rel=\"stylesheet\"> </head> <body> <div class=\"container\"> <div class=\"card mt-5\"> indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental 56
<div class=\"card-body\"> <h1 class=\"text-center my-4\">Eloquent: Many To Many Relationship</h1> <table class=\"table table-bordered table-striped\"> <thead> <tr> <th>Nama Siswa</th> <th>Hobi</th> <th width=\"1%\">Jumlah</th> </tr> </thead> <tbody> @foreach($siswa as $s) <tr> <td>{{ $s->nama }}</td> <td> <ul> @foreach($s->hobi as $h) <li> {{ $h->nama_hobi }} </li> @endforeach </ul> </td> <td class=\"text-center\">{{ $s->hobi->count() }}</td> </tr> @endforeach </tbody> </table> </div> </div> </div> </body> </html> indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental 57
Untuk melihat hasil dari script yang telah kita buat, buka halaman http://localhost:8000/hobi pada browser, maka akan tampil seperti gambar di bawah ini: Gambar 37 : Halaman Tampil Data Hobi Siswa Authentication (Login dan Register di Laravel) Pada sebuah aplikasi, biasanya ada area yang hanya bisa diakses oleh pengguna yang telah terdaftar. Jadi untuk masuk ke bagian itu harus login terlebih dahulu. Tanpa berlama-lama lagi, mari Kita mulai membuat sistem autentikasi yang akan digunakan untuk login/logout user. Buka Command prompt, ketikkan perintah berikut: php artisan make:auth Gambar 38 : Perintah artisan untuk membuat autentikasi 58 indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental
Setelah muncul tampilan seperti pada gambar 38, itu artinya Laravel sudah berhasil membuat scaffolding autentikasi. Laravel akan secara otomatis membuatkan semua file yang diperlukan untuk autentikasi. Jalankan localhost:8000 Gambar 30 : Muncul menu login dan register pada halaman welcome Klik Menu Register, maka akan muncul halaman pendaftaran user baru, isikan data sebagai sample. Gambar 31 : Halaman form register 59 indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental
Klik Register, maka data user tersimpan dan Kita akan diarahkan ke halaman Dashboard User Gambar 32 : Halaman Dashboard User Untuk keluar / logout sistem, klik pada nama di sebelah kanan, maka akan tampil menu Logout. Gambar 33 : Menu Logout indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental 60
Untuk masuk kembali ke dalam sistem, Kita dapat mengklik menu Login, maka akan muncul halaman Login User. Gambar 34 : Halaman Login User indosmartdigital.com | Panduan Praktis Laravel 5 #Fundamental 61
Search