• 1400/04/16

اعتبارسنجی اطلاعات در زمان به روزرسانی اطلاعات :

سلام استاد من یه مشکلی دارم 

زمانی که مدیر سایت اطلاعات کاربران رو به روز می کنه من میخوام این قوانین یکتا بودن تلفن رو پیاده سازی کنم اما ارور میده که این شماره تلفن از قبل بوده در صورتی که تلفن مال خود کاربر هست و من می خوام اینجا ارور نده.

مطالب زیادی در سایت های دیگه پیدا کردم که هیچ کدوم کار نکرد امکانش هست راهنمایی بفرمایید!

 public function rules()
    {
        return [
            'full_name_farsi' => 'required|string',
            'phone' => ['required', new Phone,'unique:users,phone,' . $this->user()->id],
            'email' => 'email:rfc,dns|unique:users,email',
        ];
    }

کد بالارو در requst نوشتم

و ارور هم میشه این:

The phone has already been taken.

توی خیلی از سایتا قسمت user اصلا this نداره یا اینکه user رو بدون پرانتز نوشته که من وقتی اونجوری می کنم ارور های دیگه میده

ممنون میشم راهنمایی بفرمایید.

 

  • 1400/04/16
  • ساعت 19:04

می تونید یکتا بودن شماره رو بجای قسمت request در خود controller مدیریت کنید

یعنی از قسمت request 

unique:users,phone

این رو پاک کنید

و در controller این رو اضافه کنید

$inputs['phone'] = (شماره تلفن دریافت شده از سمت کاربر (یا همون مدیر
$id = آیدی کاربری که اطلاعاتش داره ویرایش می شه
$user = user::where('phone', $inputs['phone'])->where('id', '!=', $id)->get();
if(!$user->isEmpty())
{
	echo 'شماره تلفن تکراری است';
}else {
	# code...
}

  • 1400/04/17
  • ساعت 18:09

سلام میتونی از این کد استفاده کنی

یک input نوع hidden و با نام user_id درست کن مقدار اون id کاربر باشه

 'phone' => ['required',Rule::unique('users','phone')->ignore(request()->input('user_id'))],

  • 1400/04/22
  • ساعت 15:18

با سلام خدمت شما همراه عزیز

 

دوستان کاملا درست فرمودن


logo-samandehi