راکت

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

8 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

8
سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

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

$query->orderBy('price');
امین محمدزاده
امین محمدزاده
@amin.webdesign

تخصص: برنامه نویسی وب - Laravel

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

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

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

Saied Hr
Saied Hr
@saeedlovelorn2

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

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

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

Saied Hr
Saied Hr
@saeedlovelorn2

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

علیرضا
علیرضا
@AliRezaa

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

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

$myint=+$string

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

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

Saied Hr
Saied Hr
@saeedlovelorn2

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

امین محمدزاده
امین محمدزاده
@amin.webdesign

تخصص: برنامه نویسی وب - Laravel

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

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

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