سلام و خسته نباشید به دوستان عزیز
یک جدول دارم به اسم sees که تعداد بازید پست ها توی این جدول ثبت شده میخوام تعداد بازدید در هر روز تا هفته گذشته برگردونم و به شکل زیر عمل کردم :
$query->selectRaw('day (created_at) day , count(*) published')
->where('created_at' , '>' , Carbon::now()->subDay(7))->latest()
->groupBy('day')->get();
اما به جایی که 7 روز برگردونه 5 روز بر میگردونه یعنی برای روزی که بازیدیدی نداشته مقداری 0 بر نمیگردونه یعنی اصلا اون روز بر نمیگردونه میخوام به صورتی عمل کنه که اون روز هم اگه رکوردی نداشت هم بر گرده.
@hesammousavi
@ali.bayat
راه حلی برای این مشکل باید وجود داشته باشه
شاید پاسخ شما همینجا باشد
من مجبور شدم به شکل زیر عمل کنم تا تعداد روز هایی که ندارم هم برام 0 قرار بده تا در chart js به مشکل بر نخورم آیا راه حل بهتری هست :
private function CheckCount($sees , $day)
{
for ($i = 0 ; $i < $day ; $i++) {
foreach ($sees as $now){
if (empty($new[$i]))
$new[$i] = 0;
if ($now['day'] === Carbon::now()->subDays($i)->day && $new[$i] === 0)
$new[$i]= $now['published'];
}
}
return array_reverse($new);
}