我正在尝试在查询中添加此条件。
$query = Cheques::select('id', 'deposit_date', 'number');
$query->where('product_cheques.cheque_status', Cheques::VERIFIED);
$query->whereRaw('DATE(product_cheques.deposit_date) BETWEEN ? AND ?', [$this->getTodayDate()->format('Y-m-d'), $this->addSevenDayBucket()->format('Y-m-d')]);
$query->get()->toArray();
运行时我没有得到任何输出。但是,当我运行ORM执行的相同查询时
DATE(product_cheques.deposit_date) BETWEEN ? AND ?
[0] - 2016-02-01
[1] - 2016-02-15
在日期字段中添加引号,我得到了所需的结果。
where DATE(product_cheques.deposit_date) BETWEEN '2016-02-01' AND '2016-02-15'
如何修改我的Eloquent查询?
答案 0 :(得分:1)
此查询不需要whereRaw
:
添加到您的控制器顶部:
use Carbon\Carbon;
在您的功能中:
Cheques::select('id', 'deposit_date', 'number')
->where('cheque_status', Cheques::VERIFIED)
->whereDate('deposit_date', '>', Carbon::today()->toDateString())
->whereDate('deposit_date', '<', Carbon::today()->addWeeks(2)->toDateString())
->get();
请参阅https://laravel.com/api/5.2/Illuminate/Database/Query/Builder.html#method_whereDate和http://carbon.nesbot.com/docs/。