سلام و روز بخیر
میخوام تو چند تا جدول که ارتباطی با هم ندارن و چند تا فیلد مشترک تو هر کدومشون هست سرچ همزمان انجام بدم
مثلا تو هر 3 تا جدول دوتا فیلد مشترک هست به نام های title , description و بعد سرچ میخوام این نتایج به صورت صفحه بندی شده در قالب یه متغییر بهم داده بشه تا با یه حلقه بشه پیمایشش کرد.
ممنون میشم مهندسین راهنمایی کنن
@hesammousavi
به نظرم یکی از بهترین راهکارها در چنین مواقعی استفاده از Unions باشه:
https://laravel.com/docs/8.x/queries#unions
بصورت خلاصه کارش اینه که خروجی چندتا کوئری رو زیر هم قرار میده... بر خلاف join که کنار همدیگه قرار میگیرند. فقط توجه داشته باشد که چندتا شرط برای استفاده از unions وجود داره. مثلا اینکه باید تعداد ستون های این کوئری ها با هم مساوی باشند تا بشه نظیر به نظیر زیر هم قرار بگیرند.
راهکار بالا در لایه دیتابیس انجام میشه و از نظر سرعت و بهره وری خیلی بهتر هست. ولی اگر تعداد رکوردهاتون چندان زیاد نیستند یا براتون اهمیت زیادی نداره این قضیه، میتونید تو لایه لاراول و با استفاده از collection ها این کار رو انجام بدید. یعنی کوئری هاتون رو بصورت جداگانه و مستقل اجرا میکنید. خروجی هر کدومشون رو داخل یک متغیر از نوع Collection میریزید و بعد از انجام تغییراتی مثل sort و map و ... اگر نیاز بود در نهایت میتونید روی همون paginaiton هم اجرا کنید و تحویل view بدید.
به نظرم یکی از بهترین راهکارها در چنین مواقعی استفاده از Unions باشه:
https://laravel.com/docs/8.x/queries#unions
بصورت خلاصه کارش اینه که خروجی چندتا کوئری رو زیر هم قرار میده... بر خلاف join که کنار همدیگه قرار میگیرند. فقط توجه داشته باشد که چندتا شرط برای استفاده از unions وجود داره. مثلا اینکه باید تعداد ستون های این کوئری ها با هم مساوی باشند تا بشه نظیر به نظیر زیر هم قرار بگیرند.
راهکار بالا در لایه دیتابیس انجام میشه و از نظر سرعت و بهره وری خیلی بهتر هست. ولی اگر تعداد رکوردهاتون چندان زیاد نیستند یا براتون اهمیت زیادی نداره این قضیه، میتونید تو لایه لاراول و با استفاده از collection ها این کار رو انجام بدید. یعنی کوئری هاتون رو بصورت جداگانه و مستقل اجرا میکنید. خروجی هر کدومشون رو داخل یک متغیر از نوع Collection میریزید و بعد از انجام تغییراتی مثل sort و map و ... اگر نیاز بود در نهایت میتونید روی همون paginaiton هم اجرا کنید و تحویل view بدید.
سلام و صبح بخیر
من از روش اول استفاده کردم و روش خوبی بود کارمو راه انداخت اما یه ایرادی داره و این است که نوع ابجکتهای خونده شده همشون تبدیل میشن به یه نوع از کلاس یا مدل و من میخوام که مدل های خونده شده بتونن نوع خودشونو حفظ کنن تا بتوانم از متدهای داخل هر ابجکت به درستی استفاده کنم که این خاصیت خودشونو فعلا از دست داده.
@mhyeganeh
به ناچا از روش دوم استفاده کردم خوب کار میکنه حالا اگه از نظر سرعت کند نباشه روش خوبی هست.
تعداد رکوردها هم زیاد هست و کم نیست فعلا از همین روش استفاده میکنم.
اشکال روش اول که برام پیش اومده اول کامنت براتون نوشتم اگه راحلی براش دارید خوشحال میشم بهم بگین تا از اون روش استفاده کنم.
از پاسخ شما خیلی ممنونم
@mhyeganeh
@hosseinshirinegad98
متاسفانه فعلا راهکاری برای این قضیه ای که اشاره کردید به نظرم نمیرسه... ولی اگر چیزی پیدا کردم خبرتون میکنم.
موفق باشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟