1. composer create-project laravel/laravel penjualan "8.*.
*"
2. membuat sebuah database melalui PHPMyAdmin misalnya dalam contoh ini database yang
bernama “toko”
3. Selanjutnya ubah konfigurasi database dalam projek laravel pada file .env yang berada pada
folder penjualan/.env menjadi seperti berikut:
DB_CONNECTION=mysql
DB_HOST=[Link]
DB_PORT=3306
DB_DATABASE=toko
DB_USERNAME=root
DB_PASSWORD=
4. Buat database dengan perintah : php artisan make:migration create_products_table
5. Ubah sintax pada database->migration->create_products_table
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('description');
$table->decimal('price');
$table->string('img_url');
$table->timestamps();
});
6. Ketikkan perintah : php artisan migrate
7. Buatlah folder baru pada file resource->views dengan nama products
8. Buatlah file [Link] pada folder products
9. Buat route seperti berikut :
Route::get('/products', function () {
return view('[Link]');
});
10. Ubah file [Link] menjadi :
<h1>List Products<h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Celana Boxer</td>
<td>Nyaman Dipakai</td>
<td>Rp. 45.000</td>
</tr>
<tr>
<td>Kaos Oblong</td>
<td>Kualitas Import</td>
<td>Rp. 150.000</td>
</tr>
</tbody>
</table>
11. Tambahkan file php
<h3>{{$subjudul}}</h3>
12. Ubah route menjadi:
Route::get('/products', function () {
$subjudul = 'Katalog Lengkap';
$contoh = 'Tes Aja';
return view('[Link]',['subjudul'=> $subjudul,'contoh' => $contoh]);
});
13. Tambahkan sintax <h3>{{$contoh}}</h3> untuk memunculkan variable contoh
14. Alternative di laravel yang lebih singkat jika menggunakan PHP versi terbaru, ubah sintax route:
Route::get('/products', function () {
$subjudul = 'Katalog Lengkap';
$contoh = 'Tes Aja';
return view('[Link]', compact([‘subjudul’,’contoh’]));
});
15. Kemudian buat logic controller untuk pengolahan data supaya lebih simple, kita buat controller
dengan perintah : php artisan make:controller ProductController
16. Pindahkan function yang ada di route ke dalam ProductController, kemudian function diberikan
nama: index dan tambahkan method public seperti berikut
17. Ubah sintax pada route dan import namespace nya
18. Kemudian data data berikut akan kita tampilkan ke dalam database
19. Buka php my admin kita tambahkan Data ke dalam table
20. Kita representasikan data kita ke dalam Model , setiap kita membuat table kita buatkan
modelnya,: php artisan make:model Product (ket: penulisan Product pada model diawali huruf
besar tanpa akhiran s yang merupakan penyebutan nama tabelnya)
21. Sekarang kita dapat memanggil model dari controller
22. Ubah sintax pada ProductController, alurnya adalah kita ambil semua data dari table products
dengan menyebut nama modelnya dan masukkan ke dalam sebuah variabel : $Products =
Product::all(); , jangan lupa mengimport modelna : use App\Models\Product;
dan variable Product kita pindahkan ke compact
23. Ubah sintax pada file [Link]. untuk memanggil variable Product, karena berupa data
collection maka kita panggil meggunakan perulangan @foreach ($products as $product) dan di
tutup dengan @endforeach
Pembuatan Create
1. Tambahkan link create pada file [Link] : <a href="/products/create">Create</a>
ketika di klik tulisan Create maka akan menuju ke suatu routes
2. Maka kita Buat route nya Route::get('/products/create', [ProductController::class,'create']);
3. kemudain kita tambahkan method create pada ProductController
public function create()
{
return view ('[Link]');
}
4. Kita tambahkan viewnya di folder products kita buat file baru dengan nama [Link],
alur pembuatannya sama sepeti pebuatan read sebelumnya dengan membuat form sebagai
berikut
5. Tambahkan property isinya method POST
6. Supaya submit form dapat dijalankan maka tambahkan route dengan method POST
Route::post('/products/create', [ProductController::class,'store']);
Ketika di jalankan akan muncul error berikut
7. Supaya tidak muncul error 419 maka di setiap form yang ada di laravel mengharuskan adanya
csrf token di dalam form
Ketika di jalankan maka muncul lagi error seperti berikut
8. Untuk dapat dijalankan maka tambahkan function pada file ProductController untuk mengambil
data data yang di inputkan user
public function store(Request $request)
{
Product::create($request->all());
return redirect('/products');
}
Ketika di jalankan lagi maka muncul error berikut
supaya tidak terjadi error tsb maka tambahkan property protected pada file Model [Link]
atau dapat juga dengan guarded
Ketika di jalankan muncul error
Kemudian tambahkan form img_urlnya untuk melengkapi form tersebut supaya tidak terjadi
error karena image_url nya tidak boleh null
Img URL : <input type="text" name="img_url"><br>
9. Kemudian ketika form kita jalankan dan di berikan input data maka table product pada database
akan terisi
10. Untuk menmpilkan data pada halaman web maka kita cek di [Link]
11. Supaya tampilan tidak blank dan langsung dapat terlihat di web ketika selesai input form maka
tambahkan sintax pada file [Link]
Pembuatan UPDATE dengan fitur Edit menggunakan method
PUT
1. Kita ubah untuk createnya , sehingga ketika kita submit lagsung mengarah ke products
bukan ke products/create
Route::post('/products/create', [ProductController::class,'store']);
Diubah menjadi seperti ini
Route::post('/products', [ProductController::class,'store']);
2. Kemudian di [Link] juga kita ubah, di form actionnya kita arahkan ke
products
<form action="/products" method="POST">
3. Membuat tombol edit pad [Link]
4. Jika kita refresh maka tampilan menjadi seperti berikut
5. Jika kilta klik edit maka muncul not found karena kita belum membuat routes nya
6. Kemudian kita buat routes nya
Route::get('/products/{id}/edit', [ProductController::class,'edit']);
7. Kalau kita refresh muncul eror karena tidak ada ethod edit di productControllernya
8. Kita buat method edit di productControllernya
public function edit($id)
{
return view('[Link]');
}
9. Kemudian buat file baru di folder products dengan nama [Link]
Dan isi view nya seperti ini
<h1>Edit Product</h1>
<form action="/products" method="POST">
@csrf
Name : <input type="text" name="name"><br>
Description : <input type="text" name="description"><br>
Price : <input type="number" name="price"><br>
Img URL : <input type="text" name="img_url"><br>
<input type="submit" value="Save">
10. Maka ketika kita refresh akan muncul tamoilan seperti berikut
11. Tetapi kita menginginkan kolom kolom tersebut sudah terisi dengan data sesuai id yang
di tuju misalnya id 1, maka di product controller kita parsing produnct dan kita
deklarasikan variable product nya
public function edit($id)
{
$product = Product::find($id);
return view('[Link]', compact(['product']));
}
12. Kemudian di view [Link] kita tambahkan valuenya
<h1>Edit Product</h1>
<form action="/products" method="POST">
@csrf
Name : <input type="text" name="name" value="{{$product->name}}"><br>
Description : <input type="text" name="description" value="{{$product-
>description}}"><br>
Price : <input type="number" name="price" value="{{$product->price}}"><br>
Img URL : <input type="text" name="img_url" value="{{$product-
>img_url}}"><br>
<input type="submit" value="Save">
13. Ketika kita refresh maka akan muncul isi dari kolom kolom tersebut
14. Ketika kita clik edit yang manapun maka akan dimunculkan tampilan sesuia dengan id
nya
15. Kemudian untuk tampilan edit kita menginginkan routesnya “/ ” ke id nya
Dan kita gunakan @method PUT
<h1>Edit Product</h1>
<form action="/products/{{$product->id}}" method="POST">
@method('PUT')
@csrf
Name : <input type="text" name="name" value="{{$product->name}}"><br>
Description : <input type="text" name="description" value="{{$product-
>description}}"><br>
Price : <input type="number" name="price" value="{{$product->price}}"><br>
Img URL : <input type="text" name="img_url" value="{{$product-
>img_url}}"><br>
<input type="submit" value="Save">
16. Maka ketika kita lakukan edit Gelas menjadi Gelas Hias misalnya
Maka ketika kita save akan muncul error berikut
17. Maka kita tambahkan routes dan function updatenya
Route::put('/products/{id}', [ProductController::class,'update']);
public function update (Request $request,$id)
{
$product=Product::find($id);
$product->update($request->all());
return redirect('/products');
}
Membuat DELETE
1. Membuat link delete di views [Link],php dan ling tsb di masukan ke dalm form
tidak menggunakan a href,
<form action="/products/{{$product->id}}"method="POST">
@method('DELETE')
@csrf
<input type="submit" value="delete">
</form>
2. Membuat routes delete
Route::delete('/products/{id}', [ProductController::class,'destroy']);
3. Membuat method destroy di [Link]
public function destroy($id)
{
$product = Product::find($id);
$product->delete();
return redirect('/products');
}