Mahmoud Alrashidi نشر 20 مارس 2021 أرسل تقرير نشر 20 مارس 2021 لدي نموذج مستخدم Laravel يحتوي على قاعدة تحقق فريدة من نوعها على اسم المستخدم والبريد الإلكتروني. عندما أقوم بتحديث النموذج ، أقوم بإعادة التحقق من الحقول ، حتى لا توجد مشكلة في التحقق من صحة القاعدة المطلوبة: $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'], 'username' => ['required', 'string', 'alpha_dash', 'max:190', 'unique:users,username'], ]); لكن يأتيني الخطأ: The username has already been taken. The email has already been taken. هل هناك طريقة لإصلاح هذا؟ 1 اقتباس
0 سمير عبود نشر 20 مارس 2021 أرسل تقرير نشر 20 مارس 2021 أثناء عملية التحديث تحتاج إلى تجاهل السجل الحالي الذي تقوم بتحديثه بخصوص القاعدة unique حتى لا يتم إحتسابه و ذلك من خلال إضافة مُعرف السجل للقاعدة بهذا الشكل: $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $user->id], 'username' => ['required', 'string', 'alpha_dash', 'max:190', 'unique:users,username,' . $user->id], ]); او بهذا الشكل: $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users','email')->ignore($user->id)], 'username' => ['required', 'string', 'alpha_dash', 'max:190', Rule::unique('users','username')->ignore($user->id)], ]); و الآن ستتمكن من تطبيق القاعدة unique بدون أية مشاكل أثناء التحديث. 1 اقتباس
0 بلال زيادة نشر 20 مارس 2021 أرسل تقرير نشر 20 مارس 2021 يمكنك اتباع القاعدة التالية في تحديث النموذج و هي تجاهل السجل الذي تود تحديثه بإضافة معرف السجل إلى التحقق 'email' => 'sometimes|required|email|unique:users,' . $id وفي حالة الكود الخاص بك يصبح هكذا 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users','email')->ignore($user->id)], وهذا ينطبق ايضا على حقل username بنفس الشكل. إذا كنت تستخدم rules في التحقق يمكنك إضافة المعرف بهذا الشكل للحقل. $input = Input::all(); $rules = User::$rules['edit']; $rules['email'] .= ',' . $user->id; // هنا $validator = Validator::make($input, $rules); if ($validator->fails()) { return Response::json(array( 'error' => $validator->messages() )); } اقتباس
0 Waleed Alfakiat نشر 20 مارس 2021 أرسل تقرير نشر 20 مارس 2021 استخدم القاعدة الآتية لاستثناء المستخدم الحالي: ... 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users', 'email')->ignore($User->id)], ... واستدعاء نموذج القاعدة من خلال: use Illuminate\Validation\Rule; اقتباس
السؤال
Mahmoud Alrashidi
لدي نموذج مستخدم Laravel يحتوي على قاعدة تحقق فريدة من نوعها على اسم المستخدم والبريد الإلكتروني. عندما أقوم بتحديث النموذج ، أقوم بإعادة التحقق من الحقول ، حتى لا توجد مشكلة في التحقق من صحة القاعدة المطلوبة:
لكن يأتيني الخطأ:
The username has already been taken. The email has already been taken.
هل هناك طريقة لإصلاح هذا؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.