استفاده از متد withDefault در Eloquent برای حذف شرط‌های Null در ریلیشن‌ها

استفاده از متد withDefault در Eloquent برای حذف شرط‌های Null در ریلیشن‌ها

اگر با Eloquent در Laravel زیاد سر و کار دارید، احتمالاً بارها با این سناریو روبه‌رو شدید که یک ریلیشن مقدار null برمی‌گردونه و مجبور شدید قبل از دسترسی به فیلدهای اون ریلیشن، کلی شرط بنویسید که خطای Trying to get property 'x' of non-object نگیرید.

اما اخیراً با قابلیتی آشنا شدم که خیلی از این شرایط رو برام ساده‌تر کرد: متد withDefault.

🔍 متد withDefault چیه؟

در ریلیشن‌هایی مثل belongsTo، hasOne، hasOneThrough و morphOne که ممکنه مقدار null برگردونن، می‌تونید از متد withDefault استفاده کنید تا به جای null، یک مدل پیش‌فرض برگرده.

مثال:

با این کار، وقتی یک پست هیچ نویسنده‌ای نداشته باشه، به جای اینکه null برگرده، یک شیء User خالی برمی‌گرده. یعنی:

خطا نمی‌ده، بلکه فقط مقدار null یا رشته خالی برمی‌گردونه.

حتی می‌تونید مقدار پیش‌فرض رو هم مشخص کنید:

 

⛔ روی چه ریلیشن‌هایی کار نمی‌کنه؟

مهمه بدونید که withDefault فقط روی ریلیشن‌هایی که یک مقدار (single result) برمی‌گردونن کار می‌کنه. بنابراین روی hasMany یا morphMany که کالکشن برمی‌گردونن، کاربردی نداره.

✅ نتیجه‌گیری

استفاده از withDefault باعث می‌شه:

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

  • از خطاهای رایج null جلوگیری بشه

  • نیازی به چک کردن دستی isset یا ?-> نباشه

حتماً یه نگاهی به داکیومنت Laravel بندازید: Laravel Docs - Default Models

    نماد‌های اعتماد

    logo-samandehi
    اپلیکیشن کرگدنKargadan on Bazaar

    © تمامی حقوق مادی و معنوی برای کرگدن محفوظ می‌باشد.