我有一个bookings表,除了存款和余额列之外,还有check_in
和check_out
列。check_in
和check_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;
不过,我所得的数字是错误的,我究竟做错了甚么?
1条答案
按热度按时间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.这应该会给你指明正确的方向。