سلام استاد من یه مشکلی دارم
زمانی که مدیر سایت اطلاعات کاربران رو به روز می کنه من میخوام این قوانین یکتا بودن تلفن رو پیاده سازی کنم اما ارور میده که این شماره تلفن از قبل بوده در صورتی که تلفن مال خود کاربر هست و من می خوام اینجا ارور نده.
مطالب زیادی در سایت های دیگه پیدا کردم که هیچ کدوم کار نکرد امکانش هست راهنمایی بفرمایید!
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 رو بدون پرانتز نوشته که من وقتی اونجوری می کنم ارور های دیگه میده
ممنون میشم راهنمایی بفرمایید.
می تونید یکتا بودن شماره رو بجای قسمت 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...
}
سلام میتونی از این کد استفاده کنی
یک input نوع hidden و با نام user_id درست کن مقدار اون id کاربر باشه
'phone' => ['required',Rule::unique('users','phone')->ignore(request()->input('user_id'))],
با سلام خدمت شما همراه عزیز
دوستان کاملا درست فرمودن