给定时间间隔内两个日期之间的Laravel口才和列

new9mtju  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一个bookings表,除了存款和余额列之外,还有check_incheck_out列。check_incheck_out是日期列,而存款和余额是小数列。
我想生成一个收入报表,该报表将给定日期间隔内的存款和余额列相加(从UI提供)。

$deposit = Booking::whereRaw("check_in >=  '$start'")
    ->whereRaw("check_out <=  '$end'")
    ->sum('deposit');

$balance = Booking::whereRaw("check_in >=  '$start'")
    ->whereRaw("check_out <=  '$end'")
    ->sum('balance');

$revenue = $deposit + $balance;

不过,我所得的数字是错误的,我究竟做错了甚么?

ltqd579y

ltqd579y1#

当链接whereRaw时,您将得到同时具有这两个值的记录的结果,即AND。
假设我们有这张table

DB::table('checkout')->whereRaw("check_in >= 5")->whereRaw("check_out < 5")->sum("sum")得到的结果是0,因为没有记录同时具有check_out〈5和check_in〉= 5。
DB::table('checkout')->whereRaw("check_in >= 5 OR check_out < 5")->sum("sum")可以得到10.
这应该会给你指明正确的方向。

相关问题