راکت
حل شده

تعداد محصول در ماه شمسی در لاراول

4 پاسخ

سلام
چطوری میتونیم تو مثلا نموداری که بدست میاریم تاریخ ها رو به صورت شمسی محاسبه کنیم ؟
یعنی فرض کنید میخوایم فروش ماه های بهمن و اسفند و فروردین رو محاسبه کنیم به تفکیک ماه . هر ماه چقدر فروش رفته چطور از طریق created_at محاسبه کنیم دقیقا مثلا در بهمن چقدر فروش رفته یا اسفند؟

ثبت پرسش جدید

پاسخ‌ها

4
عرفان همتی
عرفان همتی
@erfanhemmati

تخصص: Backend Developer

بهترین پاسخ

@mostafa.8722
سلام. وقت بخیر
می‌تونید از chart.js استفاده کنید به راحتی.

labels: [
                    @for($i=12; $i >= 1; $i--)
                        @php
                            $month = $i;
                            // $persian_month = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];
                            $persian_month = [];
                            $persian_month[0] = "ماه‌های سال";

                            switch ($month) {
                            case 1:
                            $persian_month[1] = "فروردین";
                            break;

                            case 2:
                            $persian_month[2] = "اردیبهشت";
                            break;

                            case 3:
                            $persian_month[3] = "خرداد";
                            break;

                            case 4:
                            $persian_month[4] = "تیر";
                            break;

                            case 5:
                            $persian_month[5] = "مرداد";
                            break;

                            case 6:
                            $persian_month[6] = "شهریور";
                            break;

                            case 7:
                            $persian_month[7] = "مهر";
                            break;

                            case 8:
                            $persian_month[8] = "آبان";
                            break;

                            case 9:
                            $persian_month[9] = "آذر";
                            break;

                            case 10:
                            $persian_month[10] = "دی";
                            break;

                            case 11:
                            $persian_month[11] = "بهمن";
                            break;

                            case 12:
                            $persian_month[12] = "اسفند";
                            break;
                            }
                        @endphp
                        "{{ $persian_month[$i] }}",
                    @endfor
                ],
                    data: [
                        @for($i=12; $i >= 1; $i--)
                        @php
                            $year = jdate(date('Y-m-d'))->getYear();
                            $month = $i;
                            $day = 1;
                            $persian_date = $year . '-' . $month . '-' . $day;

                            $date_count = (new Jalalian($year, $month, $day))->getMonthDays();

                            $first_month = \App\Helpers\Jalali::jalaliToGregorian($year, $month, $day, '-');
                            $end_month =  \App\Helpers\Jalali::jalaliToGregorian($year, $month, $date_count, '-');

                            $view_count = \Illuminate\Support\Facades\DB::table('visits')
                            ->whereDate('created_at', '>=', $first_month)
                            ->whereDate('created_at', '<=', $end_month)
                            ->get()
                            ->count();
                        @endphp
                        {{ $view_count }},
                        @endfor
                    ],

یکم کثیفه ولی امیدوارم کمکتون کنه :) :)

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@mostafa.8722
روشی که دوست مون گفتند روش خوبیه و همچنین میتونید از کد های زیر هم استفاده کنید! البته این برای تعداد بازدید های سایت هستش که میتونید با دیتای خودتون تعویضش کنید. کاری که باید بکنید خیلی سادست. کافیه که یه Helper بسازید و تابع زیر رو داخلش قرار بدید و بعد میتونی خیلی ساده با زدن views_chart() به دیتای نمودار دسترسی داشته باشید. در نهایت هم این دیتا ها رو در chart.js قرار میدید.


function views_chart()
{
    setlocale(LC_TIME, 'fa');
    \Carbon\Carbon::setLocale('fa');
    $views = \App\View::selectRaw('year(created_at) year, monthname(created_at) month, count(*) count')
        ->groupBy('year', 'month')
        ->orderBy('year', 'desc')
        ->get();

    $labels = $views->map(function ($item) {
        return \Morilog\Jalali\Jalalian::forge(\Carbon\Carbon::parse($item->month))->format('%B %Y');
    });
    $dataset = $views->map(function ($item) {
        return $item->count;
    });

    return [
        "labels" => $labels,
        "dataset" => $dataset,
    ];
}
Soh3illl
Soh3illl
@soh3illl

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

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

select monthname('field name') as month ...

این دستور ماه ها رو بر می گردونه که در ادامش باید بقیه دستورات رو مثل اسم جدول و ... رو وارد کنید.
بعد با استفاده از پکیج morilog/jalali بیاید این اطلاعات رو به تاریخ شمسی تبدیل کنید و بعدش هم اون رو با استفاده از charst.js نمایش بدید.

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

Mostafa Nazar
Mostafa Nazar
@mostafa.8722

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

دوتا جواب خوب بودند ولی @mrerfan.ir بهتر بود

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

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