راکت
حل شده

اعتبارسنجی

23 پاسخ

سلام دوستان.
من سه تا جدول دارم: users, deliveries, roles
زمانی که میخوام راننده جدید ایجاد کنم، داخل Request اومدم به صورت زیر تعریف کردم:

public function rules()
    {
        return [
            'user_id' => ['required', 'exists:users,id', 'unique:deliveries,user_id'],
        ];
    }

حالا میخوام یه محدودیت دیگه بذارم که راننده حتما نقشش delivery باشه.
ممنون میشم راهنمایی کنید.

ثبت پرسش جدید

پاسخ‌ها

23
ابوالفضل رجائی نسب
ابوالفضل رجائی نسب
@abol313

تخصص: برنامه نویس (laravel-backend-php)

بهترین پاسخ

خب

$this->user() 

فقط کاربری رو برمی گردونه که توی همون درخواست(کلاینت) همون زمان که درخواست و می فرسته لاگین شده و ربطی به userid داخل پارامترای ورودی نداره

پس از این کد استفاده کن

            'user_id' => [
                'required',
                'exists:users,id',
                'unique:deliveries,user_id',
                function($attribute, $value, $fail){
                    if( User::find($value)->roles->pluck('name')->doesntContain('delivery') )
                        $fail('The user has not the `delivery` role !'); //The error message
                }
            ]

البته بالای کد ها هم بزن مدلو وارد کن:

use App\Models\User;
Armin Rahmati
Armin Rahmati
@arminrahmati999

کاربر شماره دوم من دو تا نقش داشت که یکی از نقشاش راننده بود ولی من فکر کردم نقش راننده نداره، بعد اون کدی که شما فرستادینو من با این کاربر تست کردم و دیدم ثبت شد، بعد با یه کاربر دیگه که نقش راننده داشت زدم دیدم بازم ثبت شد بعد شک کردم که دیگه رفتم دیتابیسو چک کردم و دیدم کاربر دو راننده هم بودِ به خاطر همین.
تشکر فراوان.

ابوالفضل رجائی نسب
ابوالفضل رجائی نسب
@abol313

تخصص: برنامه نویس (laravel-backend-php)

اللّٰه را شکر

تشکر 😄

ok = حله

شاید پاسخ شما همین‌جا باشد

صفحه 2 از 2

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

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