Углерод делят записи на недели и месяцы - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть запись, в которой я получаю данные с отметками времени (созданный, обновленный_ат) за последние 4 месяца. Далее я хочу разделить эти данные на недельные и месячные (последние 4 недели и последние 4 месяца.)

Я пытаюсь вручную создать переменные для каждого месяца и затем написать, если logi c вводить данные в каждый месяц. Есть ли функция, которая уже делает это?

    // for student population - Last 4 months data
    $from = Carbon::now()->subMonth(4);

    $to = Carbon::now(); 

    $invoice =invoice::where('instructor_id', '=', $id)
    ->whereBetween('created_at',[$from,$to])->get();

    $week_1=$week_2=$week_3=$week_4=$month_1=$month_2=$month_3=$month_4=[];

    // write if logic and enter data for each week separately

1 Ответ

0 голосов
/ 28 апреля 2020

Нет, в Eloquent или Carbon нет function that already does it, afaik.

Я бы предложил просмотреть цикл Eloquent Collection.

Вот подсказка для вас:

$from = Carbon::now()->subMonth(4);
$to = Carbon::now(); 

$invoices = invoice::where('instructor_id', '=', $id)->whereBetween('created_at', [$from, $to])->get();

// ...

$invoicesLastWeek = $invoices->whereBetween('created_at', [
        Carbon::now()->subWeeks(1)->startOfWeek(),
        Carbon::now()->subWeeks(1)->endOfWeek()
    ]);

// ...

$invoicesTwoMonthsAgo = $invoices->whereBetween('created_at', [
    Carbon::now()->subMonths(2)->startOfMonth()),
    Carbon::now()->subMonths(2)->endOfMonth()
]);

// ...

Я бы l oop и увеличил параметры для ->subWeeks($i)-> и ->subMonths($i)->, и заполнил необходимые переменные.

Я бы сначала начал устанавливать каждый week переменную, так что я может вытолкнуть из Коллекции все счета в этом диапазоне (для производительности). Затем для каждого month vars я бы добавил weekN + weekN+1 + weekN+2 + weekN+3 vars (и также вытащил их из Коллекции, чтобы я мог на oop быстрее в Коллекции, которая уменьшается с каждым разом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...