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();          
	}
}