Kita lanjutkan tutorial kita tenang Laravel, dan masih membahas tentang : Membuat Rest API Menggunakan LARAVEL 9.0. Pada part kali ini kita akan membahas bagaimana membuat Store, Show, Update & Destroy di laravel
Untuk menambahkan fungsi untuk store, show, update dan destroy , kita akan bekerja pada satu file. yaitu \app\Http\Controllers\API\PageController.php . Pertaama tama silahkan teman teman semua mengimport class kedalam file tersebut dengan code
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator;
Dan yang perlu anda lakukan setelah itu memberikan permission di model. Field apa saja yang bisa di olah. Jadi silahkan teman teman semua buka file \app\Models\Page.php Setelah itu tambahkan code berikut
protected $guarded;
Atau anda bisa menseleksi field apa saja yang bisa di edit dengan perintah berikut
protected $fillable = ['title','slug','user_id'];
Method Store
Method store yang ada pada file ini, digunakan untuk menambahkan data. Kita bisa mengaksesnya dengan postman, maupun cara cara lain dengan method post. Dan untuk endpointnya memakai endpoint original. Anda bisa menggunakan code dibawah ini.
public function store(Request $request) { $validator_item =[ 'title'=> 'required', 'slug'=> 'required|string|unique:pages,slug,'.$request->id, 'user_id'=> 'required', 'status' => 'required', ]; $validator = Validator::make( $request->all(),$validator_item); if($validator->fails()){ return "Failed" . $validator->errors(); }else{ DB::beginTransaction(); try { $page = Page::create([ 'title' => $request->title, 'slug' => $request->slug, 'user_id' => $request->user_id, 'status' => $request->status, ]); return "Success : Page ID ".$page->id." Result:" .$page; } catch (\Throwable $th) { DB::rollBack(); return "Error " . $th->getMessage(); }finally{ DB::commit(); } } }
Method Show
Method ini bisa anda gunakan untuk mendapatkan detail data dari sebuah databse berdasarkan slug tertentu. Anda bisa mengaksesnya dengan menggunakan method get , dan untuk endpointnya bisa anda tambahkan slug yang ingin dilihat .
Contoh endpoint : https://localhost/api/page/1
Artinya anda akan ingin melihat detail tentang page yang memiliki id 1. Danuntuk fungsinya anda bisa memakai code berikut
public function show($id) { $result = Page::where('id',$id)->first(); if (!$result){ return "Empty"; }else{ return $result; } }
Method Update
Method ini bisa anda gunakan untuk update data dari sebuah databse berdasarkan slug tertentu. Anda bisa mengaksesnya dengan menggunakan method put , dan untuk endpointnya bisa anda tambahkan slug yang ingin dilihat .
Contoh endpoint : https://localhost/api/page/1
Artinya anda akan ingin update data tentang page yang memiliki id 1. Dan untuk fungsinya anda bisa memakai code berikut
public function update(Request $request, Page $page) { $validator_item =[ 'title'=> 'required', 'slug' => 'required|string'.($page->slug == $request->slug ? '' : '|unique:pages,slug,'.$request->id), //'slug' => 'required|string|unique:pages,slug,'.$page->id, 'user_id'=> 'required', 'status' => 'required', ]; $validator = Validator::make( $request->all(),$validator_item); if($validator->fails()){ return "Failed" . $validator->errors(); }else{ DB::beginTransaction(); try { $page->update([ 'title' => $request->title, 'slug' => $request->slug, 'user_id' => $request->user_id, 'status' => $request->status, ]); return "Success : Page ID ".$page->id." Result:" .$page; } catch (\Throwable $th) { DB::rollBack(); return "Error " . $th->getMessage(); }finally{ DB::commit(); } } }
Method Destroy
Method ini bisa anda gunakan untuk delete data dari sebuah databse berdasarkan slug tertentu. Anda bisa mengaksesnya dengan menggunakan method delete , dan untuk endpointnya bisa anda tambahkan slug yang ingin dilihat .
Contoh endpoint : https://localhost/api/page/1
Artinya anda akan ingin delete data tentang page yang memiliki id 1. Dan untuk fungsinya anda bisa memakai code berikut
public function destroy(Page $page) { DB::beginTransaction(); try { $page->delete(); return 'Delete Post Berhasil'; } catch (\Throwable $th) { DB::rollBack(); return $th->getMessage(); }finally{ DB::commit(); } }