TGViewer
CodeVerse | دنیای برنامه نویسان CodeVerse | دنیای برنامه نویسان @codeverse_dev · 1.06K subscribers
Post #278 168
🚀 چرا استفاده از ()updateOrCreate همیشه انتخاب درستی نیست؟

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

User::updateOrCreate(
['email' => $email],
[
'name' => $name,
'phone' => $phone,
]
);

کد تمیز است، اما پشت صحنه چه اتفاقی می‌افتد؟

در اکثر موارد، لاراول ابتدا یک SELECT اجرا می‌کند تا بررسی کند رکورد وجود دارد یا خیر، سپس UPDATE یا INSERT را انجام می‌دهد.

در پروژه‌هایی با ترافیک بالا، این موضوع می‌تواند باعث:

❌ افزایش تعداد Queryها

❌ فشار بیشتر روی Database

❌ بروز Race Condition در درخواست‌های هم‌زمان (اگر Unique Index نداشته باشید)

اگر با حجم بالای داده یا درخواست‌های زیاد سروکار دارید، گزینه‌های بهتری هم وجود دارند.

برای درج یا به‌روزرسانی گروهی، از:

User::upsert(
$users,
['email'],
['name', 'phone']
);

استفاده کنید.

مزایای ()upsert:

✅ اجرای عملیات در یک Query (بسته به نوع دیتابیس)

✅ عملکرد بهتر برای داده‌های حجیم

✅ مناسب برای Import و Sync اطلاعات

🎯 متدی که خواناتر است، همیشه سریع‌ترین گزینه نیست.

💡 قبل از انتخاب یک متد، فقط به ظاهر کد نگاه نکنید؛ به تعداد Queryهایی که در Production اجرا می‌شوند هم فکر کنید.

@CodeVerse_dev
  • ❤ 3
  • 👍 1
More from @codeverse_dev
  1. Oct 9, 2026🧪ابزار Promptfoo: به جای حدس زدن، تست کن یه سؤال: وقتی یه پرامپت می‌نویسی، از کجا می‌فهمی…
  2. Oct 9, 2026📝 گوگل یک اپ یادداشت‌بردار صوتی آفلاین با هوش مصنوعی معرفی کرد! 🔹ابزار AI Edge Foresight…
  3. Oct 7, 2026👨‍💻 برنامه‌نویسی با AI راحت‌تر شده؛ پس چرا بعضی Developerها خسته‌تر شده‌اند؟ طبق نظرسنجی…
  4. Oct 7, 2026🚨 وردپرس 7.1.3 منتشر شد؛ این یکی را عقب نینداز وردپرس دیروز نسخه 7.1.3 را منتشر کرد؛ یک آ…
  5. Oct 6, 2026شرکت Google وارد یک درگیری جدی با ناشران شده ⚖️ رگولاتور رقابت لهستان اعلام کرده Google را…
  6. Oct 6, 2026اگر Windows 11 داری، قبل از نصب بعضی آپدیت‌ها حواست باشد ⚠️ مایکروسافت تأیید کرده آپدیت پی…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →