راکت

مشکل توی ولیدیشن laravel - graphQl

سلام توی عکس زیر من تایپ ورودیه image رو string گذاشتم ولی وقتی 4 وارد میکنم بدون مشکل توی دیتابیس ثبت میشه
حتی توی mutation هم ولیدیشن رو گذاشتم ولی عمل نمیکنه!
توی mutation برای price مقدار min:4 هم گذاشتم ولی اونم عمل نمیکنه اصلا!
کسی دلیلشو میدونه؟

و سوال بعدیم اینه که اگر بخوایم عنوان یه دوره رو عوض کنیم ولیدیشن باید به چه صورتی باشه؟
فرض کنیم عنوان ها یونیک باشند، برای اپدیت اگر باز unique بزاریم توی ولیدیشن، اگر یوزر نخواد عنوان رو عوض کنه ارور میده که این عنوان قبلا انتخاب شده در صورتی که عنوان همین دوره هست! اگر unique نزاریم خیلی راحت میتونه عنوان یه دوره دیگه رو برای دوره خودش بزاره !
برای این مشکل شما چی میکنید؟
امدوارم منظورمو خوب توضیح داده باشم


ثبت پرسش جدید
سبحان دادخواه
سبحان دادخواه
تخصص :دانشجوی برنامه نویسی :)
@SobhanDadkhah6 سال پیشمطرح شد
0

با سلام . @miladparsi1070
راجب GraphQl متاسفانه اطلاعاتی ندارم . احتمالا این مورد ولیدیشن شما به بحث Api ربط داره و شاید ورژن بندی که قطعا استاتید راهنماییتون خواهند کرد (با توجه به مشکلات مشابه شما که توی سایت ها مطرح شده ) شاید هم لاراول بین اعداد و استرینگ فرق قائل میشه 🤨
ولی راجب بحث ولیدیشن برای آپدیت شما باید به لاراول بفهمونید که زمان آپدیت باید سطر جاری دیتابیس رو نادیده بگیره. اینطوری تایتلتون که یونیک هست رو فقط با تایتل بقیه سطر های دیتابیس چک میکنه و همون دوره جاری رو حساب نمیکنه . چطوری ؟ بصورت زیر :

use Illuminate\Validation\Rule;

Validator::make($data, [
    'title' => [
        'required',
        'min:5',
        Rule::unique('courses')->ignore($course->id),
    ],
]);

یا برای اینکه با کد خودتون همخوانی بیشتری داشته باشه :

'title'  =>  'required|min:5|unique:courses,title,'.$course->id

درواقع میگه یونیک باشد از جدول کورس ها ، ستون تایتل ، چه سطری رو اصطلاحا ignore کند ؟ سطری با آیدی course->id$
موفق باشید🌹


میلاد هدایت پور
میلاد هدایت پور
تخصص :در حال پیشرفت
@miladparsi10706 سال پیشمطرح شد
1

@SobhanDadkhah
ممنون اون مشکلم حل شد🙏


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام