راکت

مرتب سازی اطلاعات

7 پاسخ

سلام میخوام اطلاعات رو براساس قیمت مرتب سازی کنم به این صورت جدولم

id price qty
3 2000 1
0 3000 2
5 0 3
میخوام مرتب کنم بار اساس قیمت خب این جاش مشکلی نیست مشکل اینجاست که اگه qty یا price هرکدوم صفر بود بره ته جدول
با این ترتیبی من گذاشتم چه صعودی و چه نزوری باید همون 1 اول باشه

ثبت پرسش جدید

پاسخ‌ها

7
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

سلام خوب الان شما بر اساس price میخواید مرتب سازی کنید یا بر اساس qty ؟
اطلاعاتی رو در بالا فرستادید میخواید چه شکلی مرتب بشه ؟

علی اسماعیلی
علی اسماعیلی
@aliesmaili.code

تخصص: php Laravel

@hesammousavi
سلام میخوام براساس price مرتب سازی بشه خب ولی مثلا توی حالت نزولی ممکنه یک محصول قیمتش بالا تر باشه ولی موجود نباشه خب این باید بره ته بشینه نه اول

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

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

شما وقتی از الکوئنت یا کوئری بیلدر استفاده کنی.. لاراول برات Instance ی از کلاس Collection رو بر میگردونه.

که میتونی از متد sort استفاده کنی و یه کلوژر بهش پاس بدی و شرطش رو مشخص کنی:

$orders = Order::all();
$orders->sort(function($a, $b) {
   if($a->id === $b->id) {
     if($a->price === $b->price) {
       return 0;
     }
     return $a->price < $b->price ? -1 : 1;
   } 
   return $a->id < $b->id ? -1 : 1;
});

به این ترتیب اول بر اساس id و بعید بر اساس قیمت اطلاعات سرت میشند.
اگر qty هم برابر با 0 باشه... اصلا منطقی نیست چنین Order ی داشته باشیم. میتونید حذفش کنید.

در نهایت اگر از PHP 7 به بعد استفاده میکنی.. میتونی از Spaceship Operator هم استفاده کنی:
و کد رو بصورت زیر تغییر بدی:

$orders->sort(function ($a, $b) {
    return $a->id === $b->id ? $a->price <=> $b->price : $a->id <=> $b->id ;
});
علی اسماعیلی
علی اسماعیلی
@aliesmaili.code

تخصص: php Laravel

@ali.bayat
سلام خیل ممنون order نیست لیست محصولات وقتی فیلتر میشه اول اونایی رو نشنون بده که هم قیمت دارن و هم موجودی

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

خوب فیلدها رو با price و qty عوض کن

علی اسماعیلی
علی اسماعیلی
@aliesmaili.code

تخصص: php Laravel

@ali.bayat

میشه توی روابط هم استفاده کرد ؟ مثلا

$product->load(['variants' => function ($q) {
            $q->sort(function ($a, $b) {

            });

یه همچین چیزی

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

sort متدی هست توی کلاس collection
هر جا که کالکشن داشته باشی میتونی استفاده کنی

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

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