فرید فروزان
فرید فروزان
خواندن ۲ دقیقه·۶ سال پیش

لاراول , Mysql , اطلاعات نمودار ها در Back-end

یکی از مواردی که حتما در طی پروژه ها با اون روبرو می شین ارسال اطلاعات نمودار ها ( Charts ) برای کلاینت هست . حالا چه اندروید و ios ، چه وب .

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

نمودار اطلاعات به تفکیک ساعات شبانه روز ، روز های هفته و ...

توی مثال زیر ، فکر کنین یه سیستم وبلاگ دهی دارید ، یا مثلا یه سایت خبری ، جدول مطالب رو بر اساس ساعت ایجاد شدن پست ها بررسی میکنیم تا ببینیم توی چه ساعت هایی نوشته های بیشتر یا کمتری ارسال شدن ( یا مثلا بازدید از پست ها رو بر اساس ساعات شبانه روز بررسی میکنیم و و و ... )

https://gist.github.com/faridfr/eb9e000efe417973b6a88b263c1e76de

توی مثال بالا اونجایی که نوشته date_format created_at, %H رو دقت کنید .

این لینک رو باز کنید تا ببینید به همین شکل چقدر راحت میتونید دیتابیس رو بر اساس روز های هفته ، روز های ماه و سال و .... لیست کنید . تنها نکته ای که توی آنالیز داده ها برای (‌ روز های هفته ) وجود داره اینه که ترتیب داده ها توی خروجی به این شکله : (‌ یکشنبه ، دوشنبه ،‌ سه شنبه ، چهارشنبه ،‌ پنج شنبه ، جمعه ، شنبه ) یعنی یکشنبه اول و شنبه آخر هست . که با یک order by field 6,0,1,2,3,4,5 آخر کوئریتون درست خواهد شد .


سعی میکنیم همیشه جواب هایی که به کلاینت میدیم مثل این مثال بالامون باشه . محورهای x و y رو جدا و حتی در کنار هم بصورت xy برای کلاینت میفرستیم تا استفاده کنه .

سعی میکنیم همه ی خروجی هامون برای نمودار ها این شکلی باشه
سعی میکنیم همه ی خروجی هامون برای نمودار ها این شکلی باشه


نمودار تحلیلی برای سی روز گذشته

در برخی موارد شما مجبور هستید داده های روز های مختلف رو از دیتابیس دونه دونه بگیرید و روشون کارها و محاسباتی انجام بدید و برای کلاینت بفرستید . خب طبیعتا یکمی فشارش زیاده پس پیشنهاد میکنم جواب همچین نموداری رو cache کنید . ما توی این مثال سفارش های سی روز گذشته رو درآوردیم و روی محور X میخوایم روزهای شمسی رو نشون بدیم .

https://gist.github.com/faridfr/a4f40bba52913219408397360c88bdd9

توی این مثال سی روز گذشته رو به شمسی به کلاینت تحویل میدیم ( مثلا 05-02-1398 ) این کار با کمک کتابخونه morilog لاراول انجام میشه . و همونطور که توی کد کامنت نوشتم میتونید از whereDate هم استفاده کنید .

امیدوارم کمکی کرده باشم .

لاراولنمودارچارتنمودار در back end
شاید از این پست‌ها خوشتان بیاید