راکت
Saied Hr
Saied Hr
توسط Saied Hr مطرح شد
8 پاسخ

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

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


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

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

$query->orderBy('price');

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

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

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

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

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


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

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


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

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


علیرضا
علیرضا
@AliRezaa6 سال پیشمطرح شد
1

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

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

$myint=+$string

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

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


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

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


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

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


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

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