راکت

جمع ستون هادر لاراول

6 پاسخ

سلام دوستان من ی جدول دارم ب اسم purchase ک توی تصویر هست فیلد هاش حالا من میخوام اطلاعات رو اینتوری ازش بکشم بیرون اولین شرط اینه ک user_id های ک مساوی هم هستن تاریخ رو اینتوری توی دیتابیس ثبت کردم 1399-10-19 21:13
حالا میخوام ی شرط دیگ بزارم اطلاعاتی ک توی ماه دهم سال وارد شدن باشه
بعد اونایی ک این شرط هارو داشتن purchase_amount باهم جمع بشه من این کد رو تا جایی ک user_id هایی ک یکسانن رو جمع کنه نوشتم ولی نمیدونم چطور این شرط رو برای تاریخ بنویسم
توضیح تصویر رو وارد کنید

ثبت پرسش جدید

پاسخ‌ها

6
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

ما whereMonth داریم ولی تا حالا با تاریخ شمسی تست نکردم. البته ذخیره‌کردن تاریخ شمسی توی دیتابیس کار جالبی نیست!

NESYOU
NESYOU
@nesyourys

تخصص: توسعه دهنده بک اند

@muhammad
خب اگ من از whereMonth ک شمامیگی استفاده کنم چطور باید بفهمم این کدوم ماه شمسیه!؟

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

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

فکر می‌کنم که whereMonth بر اساس فرمت تاریخ کار می‌کنه، پس به احتمال خیلی زیاد جواب می‌ده و روی بخش m از فرمت تاریخ کار می‌کنه.
ولی اگه میلادی ذخیره می‌کردید، تاریخ شمسی رو با یه پکیج می‌ساختید و بعد تبدیل به میلادی می‌کردید و بر اساس اون کوئری می‌زدید.

Bahman Aliveisi
Bahman Aliveisi
@roj

میتونی به این شکل گروه بندی کنی:

->groupBy(DB::raw('substring_index(jdate,"-",2)'))                           // 1399-10
یا
->groupBy(DB::raw('substring_index(substring_index(jdate,'-',-2),'-',1)'))   // 10

روش دوم:
اگر jdate با created_at یکی است میتونی ابتدا و انتهای ماه (1399-10-01 و 1399-10-30) رو به میلادی تبدیل کنی و جستجو را بر اساس تاریخ میلادی روی created_at انجام بدی

NESYOU
NESYOU
@nesyourys

تخصص: توسعه دهنده بک اند

@roj ممنونم از راهنماییتون substring_index چیه؟ باید بجاش چی بزارم؟

Bahman Aliveisi
Bahman Aliveisi
@roj

substringindex یک تابع mysql است که یک قسمت از ستونی که بهش میدی و با توجه به جدا کاراکتر کننده برات استخراج میکنه. لازم نیست بجاش چیزی بگذاری. بهش سه تا پارامتر میدی
نام ستون
جدا کننده
دفعات جستجو جدا کننده

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

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