بررسی رول ولیدیت یونیک برای ویرایش

- 2 هفته پیش
توسط امین محمدزاده آپدیت شد
سید حسین رضوی ( 7391 تجربه )
3 هفته پیش
تخصص : برنامه نویس وب

با سلام من یک ریکوئست جدید ساختم برای کنترلرم به این صورت

if ($this->method() == 'post'){
            return [
                'fa_name' => 'required',
                'en_name' => 'required',
                'symbol' => 'required|unique:coins',
                'icon' => 'required',
            ];
        }else{
            return [
                'fa_name' => 'required',
                'en_name' => 'required',
                'symbol' => 'required|unique:coins',
            ];
        }

چطوری هنگام ویرایش متوجه بشم که آیا سمبل تغییر کرده یا نه چون اینطوری وقتی آپدیت رو میزنه گیر میده که این قبلا انتخاب شده
اگه بیام رول یونیک رو بردارم شاید به اشتباه از سمبل استفاده بشه که قبلا انتخاب شده
آیا روشی داره که داخل همین ریکوئست عملیات رو انجام بده یا اینکه رول رو از اینجا حذف کنم و داخل تابع اپدید اونجا بررسی کنیم که آیا این سمبل قبلی خودشه یا یک جدید اضافه شده

امین محمدزاده ( 2084 تجربه )
3 هفته پیش
تخصص : برنامه نویسی وب - Laravel

سلام
برای اینکه در ویرایش به متد unique ایراد نده و نگه که این مقدار قبلا در دیتابیس وجود داره باید همون آی دی که میخواید ویرایش بکنید رو در متد یونیک مستثنا کنید. یعنی به اون پارامتر گیر نده که مستلزم اینه که آی دی اون پارامتر رو در متد unique براش بفرستید
در زمان افزودن یه ردیف به دیتابیس که از دستور زیر استفاده میکنید

return ['symbol' => 'required|unique:coins',] 

در ویرایش باید به این صورت باشه:

return ['symbol' => 'required|unique:coins:symbol,'.$item->id]

که اینجا گفتیم توی جدول coins پارامتر symbol مربوط به آی دی ردیف مورد نظرمون رو گیر نده که مقدار متغیر $item در واقع همون ردیفی هست که میخواید توی دیتابیس ویرایش کنید.

سید حسین رضوی ( 7391 تجربه )
2 هفته پیش
تخصص : برنامه نویس وب

@amin.webdesign
ممنون از پاسخ شما من این ولیدیت رو توی یه کلاس ریکوئست انجام دادم اونجا چطوری آی دی رو بگیرم

امین محمدزاده ( 2084 تجربه )
2 هفته پیش
تخصص : برنامه نویسی وب - Laravel

توی متد rules با پارامتر $this->request میتونید به مقادیری که از طریق فرم میفرستید و همچنین داده هایی که توی آدرس هست دسترسی داشته باشید. مثل :

$this->request->get('user_id')
برای ارسال پاسخ باید وارد سایت شوید