如何从Laravel的Databse获取上个月的记录?

时间:2019-06-01 07:47:16

标签: laravel laravel-query-builder

  

我有一张表resting_bus_fees。

id    | date         | student_id | remaining_balance
-----------------------------------------------------
1     | 2019-04-05   | 1          |     500  
2     | 2019-05-10   | 2          |     400     
3     | 2019-05-13   | 3          |     300
  

现在,我需要如何获取Student_id的上个月记录。这是   查询我正在使用。但这对我不起作用。

$remain_fee = \DB::table('remaining_bus_fees')
        ->whereMonth('date', '<', Carbon::now()->subMonth()->month)
        ->where('student_id', '=', 2)->get();

4 个答案:

答案 0 :(得分:0)

您的代码会在一分钟内说出日期早于一个月前,而日期应该早于一个月前(即删除<)。另外,我建议也将年份添加到查询中,否则您将开始获得前几年的结果。

这应该为您提供所需的东西:

$date = Carbon::now()->subMonth();

$remain_fee = \DB::table('remaining_bus_fees')
    ->whereMonth('date', $date->month)
    ->whereYear('date', $date->year)
    ->where('student_id', 2)
    ->get();

答案 1 :(得分:0)

有用的查询:

 $today=DB::table('remaining_bus_fees')->whereRaw('Date(created_at) = CURDATE()')->where('student_id', 2)->get();

 $yesterday= DB::table('remaining_bus_fees')->whereDate('created_at',Carbon::yesterday())->get();

 $last_7_days= DB::table('remaining_bus_fees')->whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->get();

 $this_month=DB::table('remaining_bus_fees')->whereMonth('created_at',Carbon::now()->month)->whereYear('created_at', date('Y'))->where('student_id', 2)->get();

 $last_month=DB::table('remaining_bus_fees')->whereMonth('created_at',Carbon::now()->subMonth()->format('m'))->whereYear('created_at', date('Y'))->where('student_id', 2)->get();

答案 2 :(得分:0)

将代码更改为此,它应该可以正常工作,您需要将Carbon :: now()转换为日期格式,因为您将在此处使用whereDate,它将仅考虑日期。

OutDeniedAccess

修补匠的例子

$remain_fee = \DB::table('remaining_bus_fees')
        ->whereDate('date', '<', Carbon::now()->subMonth()->toDateString())
        ->where('student_id', '=', 2)->get();

答案 3 :(得分:0)

  

尝试一下

create_table :bands_performances, id: false do |t|
  t.references :band, index: true
  t.references :performance, index: true
end