لارافيل Validation - الجزء الثالث - unique

لارافيل Validation - الجزء الثالث - unique

2024-12-21 وقت القراءه : 2 دقائق

unique

ببعض الأحيان نحتاج كي نتحقق أن القيمة المدخلة غير مسجلة في قاعدة البيانات، مثلا البريد الإلكتروني، رقم الهاتف.... للقيام بذلك يمكن إستخدام unique يضاف اليها اسم الجدول الذي يحتوي على القيمة.

مثلا إذا كان لدي جدول admins يوجد به حقل email وأريد التحقق ان الـ email لا يتكرر إستخدم ما يلي:

public function store(Request $request)
{
    $request->validate([
        'email'=>'required|unique:admins',
    ]);
    $admin=new Admin();
    $admin->email=$request->email;
    $admin->save();
}

وإذا كان البريد الإلكتروني مسجل مسبقا، سوف أحصل على الخطأ التالي:

لكن ماذا لو كان إسم الـ input يختلف عن إسم الحقل في قاعدة البيانات

مثلا إسم input = email وإسم الحقل person_email هنا يجب إضافة إسم الـ input إلى الجدول في التحقق

 

لو كان لدي الفورم التالي

<form action="{{route('validation.store')}}" method="POST">
    @csrf
    <div class="container">
        @error('person_email')
        <div class="alert alert-danger">{{$message}}</div>
        @enderror
        <div class="mb-3">
            <input type="email" class="form-control" value="{{ old('email') }}" name="email" placeholder="Please Enter Email">
        </div>
        <button type="submit" class="btn btn-primary">Add</button>
    </div>
</form>

وكان لدي الجدول التالي

للتحقق إستخدم الكود التالي ، حيث يجب إضافة إسم input إلى إسم الجدول يفصل بينهما فاصلة.

$request->validate([
    'person_email'=>'required|unique:admins,email',
]);


السؤال، كيف إستخدم ذلك في التعديل 

بما أنه في التعديل سيعاد إدخال نفس القيمة، فإن ذلك سوف يتسبب في خطأ ولن تقبل عملية validation تمرير البيانات.

لحل ذلك نستخدم skip حسب id، نضيف دالة جديده إلى عملية التحقق وهي id ويمكن الحصول على id بطريقتين:-

  • في فورم التعديل عمل حقل مخفي يحتوي على الـ id.
  • إستخدام segment.

في هذا المثال سوف أستخدم segment.

$request->validate([
    'name'=>'required|unique:admins,'.request()->segment(3).'.id',
]);

التعليقات
علي حسن
منذ 3 سنوات

لو عملت ال request او ال validate مفصول كيف راح ينكت الكود

إضافة تعليق
Loading...