دوستان من یه دیتابیس دارم توش محصول هستش.
یه سطر داره به اسم 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();
میشه لطفا یه کد بهم بگید چطور مرتب کنم تو حلقه از بیشترین قیمت به کمترین قیمت لیست بشه هر چی می زنم کار نمی کنه.
سلام بر شما
خب چرا روی varchar گذاشتی؟
این برای دیتا های استرینگی کوتاه هست. بخاطر همین هست که روی این دیتا ها نمی تونی این کار رو کنی.
ستون price خودت رو روی number ( integer ) بزار یا اگه قیمت های خودت خیلی زیاده روی bigint بزار
سلام وقت بخیر
ببنید دوست عزیز شما اومدید قیمت رو به صورت رشته ذخیره کردید و رشته مثل عدد نمیاد بگه خوب این عدد از بقیه بزرگ تره پس اینو برگردونم اول بعد بقیه زیرش شما میتونید به صورت عدد توی دیتابیس ذخیره کنید هر نوع داده میژگی های خودش رو داره توی رشته orderBy اگه اشتباه نکنم میاد براساس حروف میچینه اما توی int میاد بر اساس مقدار اعداد میچینه حالا شما میتونید این هارو مرتب نشده بگیرید و توی لیستی چیزی ذخیره کنید ورشته هارو تبدیل به عدد کنید و توی یک ارایه مرتب کنید بر اساس بزرگ به کوچیک بعد نمایش بدید اما همونطور که قبلا گفتم بهتره قیمت رو به صورت ددی توی دیتابیس ذخیره کنید چون ممکنه بخواید بعدا هم روی قیمت ها عملیاتی رو انجام بدید مقلا این با اون جمع بشه یا هرچی باز همین مشکل رو دارید و هی باید یا تبدیل کنید یا ...
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟