راکت
حل شده

جستجو در چند جدول

6 پاسخ

سلام و روز بخیر
میخوام تو چند تا جدول که ارتباطی با هم ندارن و چند تا فیلد مشترک تو هر کدومشون هست سرچ همزمان انجام بدم
مثلا تو هر 3 تا جدول دوتا فیلد مشترک هست به نام های title , description و بعد سرچ میخوام این نتایج به صورت صفحه بندی شده در قالب یه متغییر بهم داده بشه تا با یه حلقه بشه پیمایشش کرد.
ممنون میشم مهندسین راهنمایی کنن
@hesammousavi

ثبت پرسش جدید

پاسخ‌ها

6
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

به نظرم یکی از بهترین راهکارها در چنین مواقعی استفاده از Unions باشه:
https://laravel.com/docs/8.x/queries#unions

بصورت خلاصه کارش اینه که خروجی چندتا کوئری رو زیر هم قرار میده... بر خلاف join که کنار همدیگه قرار می‌گیرند. فقط توجه داشته باشد که چندتا شرط برای استفاده از unions وجود داره. مثلا اینکه باید تعداد ستون های این کوئری ها با هم مساوی باشند تا بشه نظیر به نظیر زیر هم قرار بگیرند.

راهکار بالا در لایه دیتابیس انجام میشه و از نظر سرعت و بهره وری خیلی بهتر هست. ولی اگر تعداد رکوردهاتون چندان زیاد نیستند یا براتون اهمیت زیادی نداره این قضیه، می‌تونید تو لایه لاراول و با استفاده از collection ها این کار رو انجام بدید. یعنی کوئری هاتون رو بصورت جداگانه و مستقل اجرا می‌کنید. خروجی هر کدومشون رو داخل یک متغیر از نوع Collection میریزید و بعد از انجام تغییراتی مثل sort و map و ... اگر نیاز بود در نهایت می‌تونید روی همون paginaiton هم اجرا کنید و تحویل view بدید.

majid jalilian
majid jalilian
@mjalilian.majid

تخصص: توسعه دهنده

من متوجه منظورتون نشدم یعنی بین این table ها هیچ رابطه ای نیست و حتی نمیتونید join کنید؟

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

بله رابطه ای بین این جدول ها نیست
@mjalilian.majid

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

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

سلام و صبح بخیر
من از روش اول استفاده کردم و روش خوبی بود کارمو راه انداخت اما یه ایرادی داره و این است که نوع ابجکتهای خونده شده همشون تبدیل میشن به یه نوع از کلاس یا مدل و من میخوام که مدل های خونده شده بتونن نوع خودشونو حفظ کنن تا بتوانم از متدهای داخل هر ابجکت به درستی استفاده کنم که این خاصیت خودشونو فعلا از دست داده.
@mhyeganeh

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

به ناچا از روش دوم استفاده کردم خوب کار میکنه حالا اگه از نظر سرعت کند نباشه روش خوبی هست.
تعداد رکوردها هم زیاد هست و کم نیست فعلا از همین روش استفاده میکنم.
اشکال روش اول که برام پیش اومده اول کامنت براتون نوشتم اگه راحلی براش دارید خوشحال میشم بهم بگین تا از اون روش استفاده کنم.
از پاسخ شما خیلی ممنونم
@mhyeganeh

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

@hosseinshirinegad98
متاسفانه فعلا راهکاری برای این قضیه ای که اشاره کردید به نظرم نمیرسه... ولی اگر چیزی پیدا کردم خبرتون می‌کنم.
موفق باشید.

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

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