Retrive all rows from last month (Laravel + Eloquent)

前端 未结 4 1650
Happy的楠姐
Happy的楠姐 2021-01-11 19:21

I\'m trying to get all records that belongs to last month, so far I managed to get all from last month but to date today, I\'m not sure how I can get only for last month

相关标签:
4条回答
  • 2021-01-11 19:47

    Try this solutions:

    $revenueMonth = Callback::where(
        'created_at', '>=', Carbon::now()->subDays(30)->toDateTimeString()
    );
    

    You get all Callback for last 30 days.

    $revenueMonth = Callback::where(
        'created_at', '>=', Carbon::now()->firstOfMonth()->toDateTimeString()
    );
    

    Get for current month.

    $revenueMonth = Callback::where(
        'created_at', '>=', Carbon::now()->startOfMonth()->subMonth()->toDateString()
    );
    

    Get for start last month.

    UPDATED

    $revenueMonth = Callback::where(
        'created_at', '>=', Carbon::now()->subMonth()->toDateTimeString()
    );
    

    This is what are you looking for :)

    Hope it will help you:)

    0 讨论(0)
  • 2021-01-11 19:55

    More clear solution for your problem:

    $revenueMonth = Callback::whereMonth(
        'created_at', '=', Carbon::now()->subMonth()->month
    );
    
    0 讨论(0)
  • 2021-01-11 20:05

    UPDATED eloquent version of the your answer

    $fromDate = Carbon::now()->subMonth()->startOfMonth()->toDateString();
    $tillDate = Carbon::now()->subMonth()->endOfMonth()->toDateString();
    
    $revenueLastMonth = Callback::whereBetween('created_at',[$fromDate,$tillDate])->get();
    
    0 讨论(0)
  • 2021-01-11 20:10

    None of the answers get's me to where I'm looking to go :(.

    I have a solution but I think it's ugly and hoped it could be made more clean

    $fromDate = Carbon::now()->subMonth()->startOfMonth()->toDateString();
    $tillDate = Carbon::now()->subMonth()->endOfMonth()->toDateString();
    
    $revenueLastMonth = Callback::whereBetween(DB::raw('date(created_at)'), [$fromDate, $tillDate])->get();
    

    This will give my the result I'm looking for, here is my records:

    2017-09-07 09:46:43
    2017-09-07 09:46:43
    2017-09-07 09:46:43
    2017-09-02 09:46:43
    2017-08-07 09:46:43
    

    And I want it to return ONLY what records is made in August 2017 (2017-08-07 09:46:43)

    0 讨论(0)
提交回复
热议问题