علی گلکار
3 سال پیش توسط علی گلکار مطرح شد
2 پاسخ

فیلتر بر اساس pilot

من دوتا مدل product و vendor دارم برای یه سیستم چند فروشندگی و این وسط یه جدول pivot به اسم product_vendor وجود داره که relation این دو هست و قیمت و موجودی هر فروشنده از یه کالا هم توی اون ذخیره می‌شه

در واقع سیستم به این شکله که کالا از قبل هست و فروشنده میاد اونو انتخاب می‌کنه و قیمت اش بعد از اون توی صفحه کالا کنار بقیه فروشنده ها نمایش داده میشه

حالا توی صفحه اصلی فروشگاه مشکلم اینه که چطور بر اساس گرانترین و ارزانترین کالا sort کنم
در ضمن توی صفحه اصلی فروشگاه فقط برای هر محصول من ارزان ترین فروشنده رو به عنوان قیمت کالا نشون میدم و بقیه باید بره توی صفحه خود کالا (مثل دیجی کالا تقریبا)


ثبت پرسش جدید
مهران مرندی
تخصص : برنامه نویس
@mehranmarandi 3 سال پیش آپدیت شد
0

یه راه حلی که به نظر من میرسه اجرای کوئری اصلی روی جدول pivot هست.
و کدی که الان به نظرم میرسه اینه (البته اسم دقیق جدول و فیلد های اونو که نمیدونم برای همین باید اسماشو بر اساس جدول خودتو تغییر بدید)

$query = product_vendor::query();
$query->where('available', '>', 1);
$query->select('product_id', DB::raw('min(price) as price'));
$query->groupBy('product_id');
$query->orderBy('price', 'DESC');
$query->with('product');
$products = $query->get();

امیدوام مفهوم کلی رو گرفته باشید.
شب خوش 😴😴😴


علی گلکار
تخصص : توسعه دهنده back-end
@aligolkarali 3 سال پیش مطرح شد
0

@mehranmarandi90 راه حل درستی به نظر می‌رسه ولی خوب مشکل اینه که کلا این قسمت از table product شروع میشه
یعنی من پروداکت ها رو می‌گیرم و فیلترهای مختلف مثل sorting و دسته بندی‌ و attribute های مختلفی مثل رنگ و سایز و اینطور چیز‌ها در که که توی محصولات مختلف فرق هم دارن رو اعمال می‌کنم.
این راه حل برای sort کردن بر اساس قیمت جواب می‌ده ولی خوب برای sort کردن بقیه به همین مشکل توی اونا می‌خورم

راه حلی موقتی که ازش استفاده کردم فعلا اینه که product ها رو می‌گیرم و بعد از طریق collection روشون فیلتر می‌زنم و بعدم به صورت دستی paginate می‌کنم


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

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