اعتبارسنجی آرایه در لاراول بدون N+1
وقتی کاربر یه سبد خرید با چند آیتم ارسال میکنه، اعتبارسنجی هر product_id با Rule::exists بهصورت پیشفرض باعث N+1 کوئری میشه؛ یعنی برای هر آیتم یه SELECT جداگانه اجرا میشه. لاراول یه راهحل تمیز داره: دادههای موردنیاز رو قبل از اجرای rules() در متد prepareForValidation() با یه کوئری واحد prefetch کن و بعد هر آیتم رو در حافظه چک کن. اینطوری هم N+1 حذف میشه و هم پیغام خطا دقیقاً روی همون فیلد خاص (مثلاً items.2.product_id) نشون داده میشه.
این محتوا بهصورت خودکار با استفاده از هوش مصنوعی تولید شده است. بررسی نهایی آن پیش از استفاده توصیه میشود و مسئولیت استفاده از آن بهعهده کاربر است. برای مطالعه متن اصلی خبر،اینجا را کلیک کنید




