Laravel中whereRaw的问题

时间:2016-02-04 11:19:21

标签: php laravel laravel-5 eloquent

我正在尝试在查询中添加此条件。

$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查询?

1 个答案:

答案 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_whereDatehttp://carbon.nesbot.com/docs/