رضا
1 سال پیش توسط رضا مطرح شد
3 پاسخ

مشکل در دریافت خروجی بیشترین قیمت لاراول

دوستان من یه دیتابیس دارم توش محصول هستش.
یه سطر داره به اسم price
من price رو varchar گذاشتم چون محصولاتی دارم که قیمت اونها 0.0000007 هستن چون قیمت محصول با بیت کوین هستش واسه همین اینقدر خرد میشه.
حالا مشکلم اینجاست تو جدول 20 تا دونه محصول هستش هر کدوم قیمت های متفاوت مثلای یکی هستش 50 یا 1000000 یکی 175000000 مشکل من اینجاست وقتی کوری می زنم به دیتابیس که تو حلقه فور ایچ بعدش چاچ بگیریم مرتب سازی بر اساس بالاترین قیمت تو جدول price اصلا مرتب سازی درست نیست کلا گرون ترین مبلغ مثلا 50000000 هستش میاد 25000 رو میاره اول چاپ می کنه.

$order= \DB::table('product')->where('status','open')
        ->OrderBy('price','ASC')
        ->take(100)->get();
$order= \DB::table('product')->where('status','open')
        ->OrderBy('price','DESC')
        ->take(100)->get();

میشه لطفا یه کد بهم بگید چطور مرتب کنم تو حلقه از بیشترین قیمت به کمترین قیمت لیست بشه هر چی می زنم کار نمی کنه.


ثبت پرسش جدید
محمد امین فتاحی
تخصص : MERN stack developer
@mafattahi 1 سال پیش مطرح شد
0

سلام بر شما
خب چرا روی varchar گذاشتی؟
این برای دیتا های استرینگی کوتاه هست. بخاطر همین هست که روی این دیتا ها نمی تونی این کار رو کنی.
ستون price خودت رو روی number ( integer ) بزار یا اگه قیمت های خودت خیلی زیاده روی bigint بزار


حسین افتخارراد
تخصص : نال کد
@hosseinradvictor 1 سال پیش مطرح شد
0

در اخر دستور تون به جای get() از max() استفاده کنید


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
0

سلام وقت بخیر
ببنید دوست عزیز شما اومدید قیمت رو به صورت رشته ذخیره کردید و رشته مثل عدد نمیاد بگه خوب این عدد از بقیه بزرگ تره پس اینو برگردونم اول بعد بقیه زیرش شما میتونید به صورت عدد توی دیتابیس ذخیره کنید هر نوع داده میژگی های خودش رو داره توی رشته orderBy اگه اشتباه نکنم میاد براساس حروف میچینه اما توی int میاد بر اساس مقدار اعداد میچینه حالا شما میتونید این هارو مرتب نشده بگیرید و توی لیستی چیزی ذخیره کنید ورشته هارو تبدیل به عدد کنید و توی یک ارایه مرتب کنید بر اساس بزرگ به کوچیک بعد نمایش بدید اما همونطور که قبلا گفتم بهتره قیمت رو به صورت ددی توی دیتابیس ذخیره کنید چون ممکنه بخواید بعدا هم روی قیمت ها عملیاتی رو انجام بدید مقلا این با اون جمع بشه یا هرچی باز همین مشکل رو دارید و هی باید یا تبدیل کنید یا ...


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

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