سلام دوستان من ی جدول دارم ب اسم purchase ک توی تصویر هست فیلد هاش حالا من میخوام اطلاعات رو اینتوری ازش بکشم بیرون اولین شرط اینه ک user_id های ک مساوی هم هستنتاریخ رو اینتوری توی دیتابیس ثبت کردم 1399-10-19 21:13
حالا میخوام ی شرط دیگ بزارم اطلاعاتی ک توی ماه دهم سال وارد شدن باشه
بعد اونایی ک این شرط هارو داشتن purchase_amount باهم جمع بشهمن این کد رو تا جایی ک user_id هایی ک یکسانن رو جمع کنه نوشتم ولی نمیدونم چطور این شرط رو برای تاریخ بنویسم
ما whereMonth داریم ولی تا حالا با تاریخ شمسی تست نکردم. البته ذخیرهکردن تاریخ شمسی توی دیتابیس کار جالبی نیست!
فکر میکنم که whereMonth بر اساس فرمت تاریخ کار میکنه، پس به احتمال خیلی زیاد جواب میده و روی بخش m از فرمت تاریخ کار میکنه.
ولی اگه میلادی ذخیره میکردید، تاریخ شمسی رو با یه پکیج میساختید و بعد تبدیل به میلادی میکردید و بر اساس اون کوئری میزدید.
میتونی به این شکل گروه بندی کنی:
->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 انجام بدی
substringindex یک تابع mysql است که یک قسمت از ستونی که بهش میدی و با توجه به جدا کاراکتر کننده برات استخراج میکنه. لازم نیست بجاش چیزی بگذاری. بهش سه تا پارامتر میدی
نام ستون
جدا کننده
دفعات جستجو جدا کننده
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟