Saied Hr
5 سال پیش توسط Saied Hr مطرح شد
8 پاسخ

اولویت بندی بر اساس قیمت در لاراول

سلام دوستان من ی جدولی ایجاد کردم که ی تعداد کالا همراه با قیمت توش ثبت میشه،ولی قیمت ها به صورت string ذخیره شدن،الان چطور کالا ها را برحسب قیمت اونم زیاد به کم نشون بدم؟


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش مطرح شد
0

خب از orderBy استفاده کن دیگه!

$query->orderBy('price');

امین محمدزاده
تخصص : برنامه نویسی وب - Laravel
@amin.webdesign 5 سال پیش آپدیت شد
0

سلام
اگه منظورتون از string اینه که به صورت حروف ذخیره شده که امکانش فکر نکنم باشه ولی اگه نوع ستون جدولتون از نوع string باشه و توی خونه ها به صورت عدد باشه بر اساس ترتیب اعداد هر عدد مرتب میکنه یعنی اگه شما 25 و 205 داشته باشید عدد 25 بیشتر از 205 هست چرا؟ چون اعداد اولشون یکیه ولی عدد دومشون چون مال 25 میشه 5 و مال 205 میشه 0 پس 5 بیشتر از 0 هست یعنی به صورت افقی عمل میکنه مثل حروف
شما نوع ستون قیمت رو در جدول دیتابیس به حالت int تغییر بدید اوکی میشه و با دستور زیر میتونید از بیشتر به کمتر مرتب سازی کنید

$query->orderBy('price','desc')

Saied Hr
@saeedlovelorn2 5 سال پیش مطرح شد
0

@amin.webdesign
دقیقا منظورم این بود 25 رو بیشتر از 205 در نظر میگیره .اگه به صورت اینتیجر ذخیره کنم بعدا به مشکل برنمیخورم چون عددها خیلی زیادن؟


الیاس سخاوتی نیا
تخصص : علاقه‌مند به برنامه‌‎نویسی
@elyassir 5 سال پیش مطرح شد
0

@saeedlovelorn2
همون string هم اضافه کنین میتونین مقایسه و مرتب سازی کنین
فرقی با int نداره


Saied Hr
@saeedlovelorn2 5 سال پیش آپدیت شد
0

میخوام موقع select کردن به integer تبدیلشون بکنم چون محسابات هم میخوام باهاشون انجام بدم ,ولی به ی مشکلی برمیخورم اگه تو کنترلر ی حلقه ایجاد کنم و تمام قیمت ها رو به integer تبدیل کنم و باز توی ویو حلقه ی foreach بزنم .برفرض که با هیچ خطایی مواجه نشم،چطوری باید جمع و تفریق رو قیمت ها اعمال بکنم؟


علیرضا
@AliRezaa 5 سال پیش آپدیت شد
1

اگر خیلی از بابت کارکرد پیشنهاد دوستان شک دارین روی یک کپی از همون دیتابیس عملیات انجام بدین و حالات مختلفو تست کنین اگر مشکلی مشاهده نشد رو دیتابیس اصلی پیاده کنید.

در محیط php گفته میشه اضافه کردن + به ابتدای هرمتغیر محتوای اون رو تبدیل به int میکنه ، یعنی

$myint=+$string

حسن این روش اینه که نیاز به هیچ تغییری در سمت دیتابیس ندارید، تنها محتوای قیمت رو از دیتابیس فراخوانی کنید و بعد از + کردن بعنوان یک int باهاش رفتار کنید..

https://www.php.net/manual/en/language.operators.arithmetic.php


Saied Hr
@saeedlovelorn2 5 سال پیش مطرح شد
0

با راهنمایی هاتون تونستم به نتیجه برسم .خیلی ممنون


امین محمدزاده
تخصص : برنامه نویسی وب - Laravel
@amin.webdesign 5 سال پیش مطرح شد
0

@saeedlovelorn2
اصلا نیازی نیست توی php این کار رو بکنید
به هر حال ما هم در این زمینه کلی کار کردیم و صرفا تجربه خودم رو به شما منتقل کردم. شما میتونید توی دیتابیس نوع ستون قیمت رو به حالت INT یا اگه ارقام عددتون بیشتر بود میتونید روی BIGINT قرار بدید. هیچ مشکلی هم پیش نمیاد. به راحتی هم میتونید توی کوئری ها سورت بکنید. البته این رو هم بگم که اگه قیمتهاتون عدد اعشاری هم داشت میتونید به صورت decimal قرار بدید نوع ستون رو


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

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