我有一张表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();
答案 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