Laravel Fundamental Ebook
Laravel Fundamental Ebook
Buka Command Prompt lalu tujulah lokasi folder yang akan menampung folder
kerja kita. Bagi pengguna XAMPP dapat menggunakan folder htdocs.
Tunggulah hingga proses penginstalan selesai. Setelah itu, Kita bisa mulai
membuat project laravel dengan mengetikkan perintah:
Setelah proses instalasi Laravel selesai, Kita perlu menguji apakah hasil
instalasi tersebut berjalan dengan baik atau tidak.
Setiap request yang datang pada laravel akan diarahkan melalui sebuah
route. Route ini yang akan menentukan respon apa yang akan dikerjakan untuk
membalas request tersebut.
Berikut ini adalah perintah route untuk menampilkan halaman default Laravel
tersebut
Ada dua cara yang dapat digunakan untuk membuat Controller. Cara
pertama, dengan membuat file controller secara manual dan tuliskan code
untuk extends controller secara manual. Cara kedua, adalah dengan membuat
file Controller lewat Artisan di Laravel.
Kita gunakan cara yang kedua, pada latihan kali ini kita akan membuat
Controller dengan nama BlogController dengan menuliskan di command
prompt / terminal :
Ubah route halaman ‘profil’ pada latihan sebelumnya menjadi seperti berikut
Route::get('profil', 'CobaController@profil');
namespace App\Http\Controllers;
use Illuminate\Http\Request;
Dalam sebuah aplikasi, sangat jarang Kita temukan isi dari file view yang
bersifat statis. Pada umumnya, view dipakai untuk menampilkan data,
contohnya adalah data yang berasal dari database.
Namun, karena kita belum sampai pada pembahasan database, maka pada
latihan kali ini kita akan mencoba menampilkan data dari variabel.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
Pada contoh kali ini, Kita coba untuk memberikan data array kepada view.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
Pada latihan kali ini, Kita akan menggunakan Bootstrap untuk membuat
tampilan website Kita terlihat lebih cantik.
Persiapan
namespace App\Http\Controllers;
use Illuminate\Http\Request;
Supaya file-file view itu lebih terorganisir maka Kita dapat mengelompokkan ke
dalam sub-folder khusus.
Buat folder blog di dalam folder views, sehingga akan terbentuk path
laravelapp\resources\views\blog\
Buat beberapa file baru dan simpan nama file blade seperti berikut:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,
shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>@yield('title')</title>
</head>
@section('intro-header')
<!-- Header -->
<header class="intro-header text-white" style="background: url('{{
asset
@section('main')
<!-- Main -->
<section class="main">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>Halaman Home</h2>
<p class="lead">Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
</div>
</section>
<!-- END : Main -->
@endsection
@section('intro-header')
<!-- Header -->
<header class="intro-header text-white" style="background: url('{{
asset
@section('main')
<!-- Main -->
<section class="main">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>Halaman Tentang Kami</h2>
<p class="lead">Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
@section('intro-header')
<!-- Header -->
<header class="intro-header text-white" style="background: url('{{
asset
@section('main')
<!-- Main -->
<section class="main">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto">
<h2>Kontak Kami</h2>
<p class="lead">Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
</div>
</section>
<!-- END : Main -->
@endsection
Untuk melihat hasil dari template yang telah kita buat, buka halaman
http://localhost:8000/blog pada browser, maka akan tampil seperti gambar
di bawah ini:
Latihan CRUD (Create, Read, Update, Delete) pada Laravel dengan Query
Builder
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
$member = DB::table('member')
->where('nama', 'LIKE', "%".$cari."%")
->paginate();
return view('member.index', ['member' => $member]);
}
DB::table('member')->insert([
'nama' => $request->nama,
'pekerjaan' => $request->pekerjaan,
'umur' => $request->umur,
'alamat' => $request->alamat
]);
return redirect('/member');
}
return redirect('/member');
}
return redirect('/member');
}
}
{{ $member->links() }}
</div>
</div>
</div>
</body>
</html>
<br>
<br>
@if(count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if(count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@foreach($member as $m)
<form action="/member/update" method="post">
{{ csrf_field() }}
<input type="hidden" name="id" value="{{ $m-
>id }}">
<div class="form-group">
<label>Nama</label>
<input type="text" class="form-control"
name="nama" required="required" value="{{ $m->nama }}">
</div>
<div class="form-group">
<label>Pekerjaan</label>
<input type="text" class="form-control"
name="pekerjaan" required="required" value="{{ $m->pekerjaan }}">
</div>
<div class="form-group">
<label>Umur</label>
<input type="text" class="form-control"
name="umur" required="required" value="{{ $m->umur }}">
</div>
<div class="form-group">
<label>Alamat</label>
<textarea class="form-control"
name="alamat" required="required">{{ $m->alamat }}</textarea>
</div>
Untuk melihat hasil dari script yang telah kita buat, buka halaman
http://localhost:8000/member pada browser, maka akan tampil seperti
gambar di bawah ini:
Migration merupakan fitur yang ada pada laravel yang berfungsi sebagai
Version Control System untuk database.
Dengan fungsi migration maka semua perubahan yang Kita lakukan database
akan dicatat dalam suatu table tersendiri. Sehingga memudahkan Kita untuk
dapat membatalkan / rollback perubahan pada suatu table apabila terdapat
kesalahan ke kondisi semula.
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('mahasiswa');
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
}
Untuk memulai menggunakan fitur ini, ketikkan perintah php artisan berikut
pada command prompt:
Pada contoh latihan ini, kita akan memanfaatkan Faker untuk mengisikan data
Member sebanyak 50 data.
use Illuminate\Database\Seeder;
use Faker\Factory as Faker;
DB::table('member')->insert([
'nama' => $faker->name,
'pekerjaan' => $faker->jobTitle,
'umur' => $faker->numberBetween(25,40),
'alamat' => $faker->address
]);
}
}
}
Maka data pada table member akan bertambah 50 data seperti ditampilkan
pada halaman browser berikut:
Pada latihan kali ini, kita akan memanfaaktan fitur eloquent di laravel untuk
menjalankan query-query
query database.
use Illuminate\Support
Support\Facades\Schema;
use Illuminate\Database
Database\Schema\Blueprint;
use Illuminate\Database
Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pegawai');
}
}
Jalankan migration
Langkah selanjutnya, gunakan fitur seeder dan faker untuk membuat sample
data pegawai sebanyak 50 data.
Buka command prompt, ketikkan perintah berikut untuk membuat file model
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Pegawai;
return view('pegawai.index',['pegawai'=>$pegawai]);
}
Pegawai::create([
'nama' => $request->nama,
'alamat' => $request->alamat
]);
return redirect('/pegawai');
}
$pegawai = Pegawai::find($id);
$pegawai->nama = $request->nama;
$pegawai->alamat = $request->alamat;
$pegawai->save();
return redirect('/pegawai');
}
return redirect('/pegawai');
}
}
<br>
{{ $pegawai->links() }}
</div>
</div>
</div>
<div class="form-group">
<label>Alamat</label>
<textarea name="alamat" class="form-control"
placeholder="Alamat Pegawai.."></textarea>
@if($errors->has('alamat'))
<div class="text-danger">
{{ $errors->first('alamat') }}
</div>
@endif
</div>
<div class="form-group">
<input type="submit" value="Simpan" class="btn btn-
success">
</div>
<div class="form-group">
<label>Alamat</label>
<textarea name="alamat" class="form-control">{{ $pegawai-
>alamat }}</textarea>
@if($errors->has('alamat'))
<div class="form-group">
<input type="submit" value="Update" class="btn btn-
success">
</div>
</form>
</div>
</div>
</div>
Untuk melihat hasil dari script yang telah kita buat, buka halaman
http://localhost:8000/pegawai pada browser, maka akan tampil seperti
gambar di bawah ini:
Sejauh ini Kita hanya melakukan operasi database terbatas hanya pada satu
table. Pada aplikasi sesungguhnya, tentu akan melibatkan banyak table.
Table-table tersebut memiliki hubungan (relationship) satu sama lain.
Hubungan itu bisa One-to-One, One-to-Many atau Many-to-Many.
Pada pembahasan kali ini Kita akan fokus pada jenis hubungan yang pertama
yaitu One-to-One.
Buat dua buah table di dalam database dblaravel, yaitu table pengguna dan
telepon
dilanjutkan dengan
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pengguna');
}
}
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Pengguna;
<div class="container">
<div class="card mt-5">
<div class="card-body">
</body>
</html>
Buat dua buah table di dalam database dblaravel, yaitu table posts dan tags
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
Schema::dropIfExists('tags');
}
}
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
<div class="container">
<div class="card mt-5">
<div class="card-body">
<h1 class="text-center my-4">Eloquent: One To Many
Relationship</h1>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Judul Article</th>
<th>Tag</th>
<th width="15%" class="text-center">Jumlah
Tag</th>
</tr>
</thead>
<tbody>
@foreach($posts as $post)
<tr>
<td>{{ $post->judul }}</td>
<td>
@foreach($post->tags as $tag)
{{$tag->tag}},
@endforeach
</td>
<td class="text-center">{{ $post->tags-
>count() }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
Buat tiga buah table di dalam database dblaravel, yaitu table siswa, hobi
dan siswa_hobi
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('siswa');
}
}
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
langkah selanjutnya, kita perlu membuat table ketiga yang berperan sebagai
pivot table. ketikkan perintah pada command prompt
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('hobi_siswa');
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App;
use Illuminate\Database\Eloquent\Model;
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Siswa;
use App\Hobi;
<div class="container">
<div class="card mt-5">
</body>
</html>
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.
Jalankan localhost:8000
Klik Menu REGISTER, maka akan muncul halaman pendaftaran user baru, isikan
data sebagai sample.
Untuk keluar / logout sistem, klik pada nama di sebelah kanan, maka akan
muncuk menu Logout.