pikolo Tue Jul 2021 1 year ago

Contoh Unique Validation dengan Soft Delete di Laravel

Saya akan menjelaskan langkah demi langkah tutorial validasi unik laravel dengan soft delete. mari kita bahas tentang validasi unik laravel dengan delete. mari kita bahas tentang laravel soft delete unique validation. Anda dapat memahami konsep email unik dengan soft delete laravel. Di sini, Membuat contoh dasar laravel unique abaikan soft delete.

Di sini, saya ingin menunjukkan cara menggunakan validasi unik dengan soft delete di aplikasi laravel 6, laravel 7 dan laravel 8. saya akan memberi Anda cara berbeda untuk menambahkan validasi unik dengan kolom delete_at dengan aplikasi Anda. Anda dapat menambahkan validasi unik pada waktu pembuatan dan juga waktu pembaruan.

Terkadang kita perlu menambahkan validasi unik dengan soft delete untuk email, user dll. Pada saat itu jika Anda memeriksa email atau user yang unik maka Anda harus menulis kueri basis data secara manual dan melakukannya menggunakan kondisi if. tetapi laravel menyediakan aturan "unik" yang akan membantu menambahkan validasi unik dengan mudah.

Pada dasarnya, Anda dapat membuat request class Anda sendiri menggunakan perintah di bawah ini:

 

Create Request Class:

php artisan make:request StoreUserRequest

php artisan make:request UpdateUserRequest

Sekarang Anda dapat menggunakannya, di controller Anda seperti di bawah ini:

Controller File Code:

<?php

namespace App\Http\Controllers;
  
use App\Http\Requests\StoreUserRequest;
use App\Http\Requests\UpdateUserRequest;
use App\User;
  

class UserController extends Controller
{
    public function store(StoreUserRequest $request)
    {
        /* Do Something */
    }

  

    public function update(UpdateUserRequest $request, User $user)
    {
        /* Do Something */
    }
}

Sekarang Anda dapat melihat solusi di bawah ini satu per satu dan Anda dapat menggunakan siapa saja yang Anda perlukan untuk validasi unik.

Contoh 1: Validasi Unik Sederhana dengan Soft Delete

app/Http/Requests/StoreUserRequest.php

<?php
  
namespace App\Http\Requests;
  
use Illuminate\Foundation\Http\FormRequest;
  
class StoreUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    } 
  
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
                'name' => 'required',
                'username' => 'required|min:8',
                'email'=>'required|email|unique:users,email,NULL,id,deleted_at,NULL'
            ];
    }
}

Contoh 2: Soft Delete Unique Validation dengan Rule

app/Http/Requests/StoreUserRequest.php

<?php
  
namespace App\Http\Requests;
  
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
  
class StoreUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }
  
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
                'name' => 'required',
                'username' => 'required|min:8',
                'email' => ['required', Rule::unique('users')->whereNull('deleted_at')]
            ];
    }
}

Contoh 3: Soft Delete Unique Validation dengan Update

app/Http/Requests/UpdateUserRequest.php

<?php
  
namespace App\Http\Requests;
  
use Illuminate\Foundation\Http\FormRequest;
  
class UpdateUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }
  
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
                'name' => 'required',
                'username' => 'required|min:8',
                'email'=> "required|email|unique:users,email,{$this->user->id},id,deleted_at,NULL"
            ];
    }
}

Contoh 4: Soft Delete Unique Validation dengan Update Rule

app/Http/Requests/UpdateUserRequest.php

<?php
  
namespace App\Http\Requests;
  
use Illuminate\Foundation\Http\FormRequest;
  
class UpdateUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }
  
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
                'name' => 'required',
                'username' => 'required|min:8',
                'email' => ['required', Rule::unique('users')->ignore($this->user)->whereNull('deleted_at')]
            ];
    }
}

Anda dapat menggunakan siapa saja yang Anda butuhkan.

Saya harap ini dapat membantu Anda...

softdelete laravel example laravel 8 laravel validation with soft delete example 8 tutorial laravel laravel soft delete example