میلاد هدایت پور
5 سال پیش توسط میلاد هدایت پور مطرح شد
2 پاسخ

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

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

عکس mutation

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


ثبت پرسش جدید
سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 5 سال پیش آپدیت شد
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$
موفق باشید🌹


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

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


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

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