其中在laravel 4中的日期之间雄辩

Md.*_*ain 10 php laravel eloquent laravel-4

我有这样的查询

SELECT * FROM `sp_price` WHERE (`from_date` between '2014-08-15' and '2014-09-18') || (`to_date` between '2014-08-15' and '2014-09-18')
Run Code Online (Sandbox Code Playgroud)

现在我如何转换此查询laravel 4.我用Eloquent

小智 14

DB::table(sp_price)
     ->whereBetween('from_date',array('2014-08-15','2014-08-18'))
     ->orWhereBetween('to_date',array('2014-08-15','2014-08-15'))
     ->get();
Run Code Online (Sandbox Code Playgroud)

也许你可以试试这个


小智 0

您可以使用whereRaw()向查询添加原始 where 子句,例如:

$results = SpPrice::whereRaw("('2014-08-15' between `from_date` and `to_date`) || ('2014-09-18' between `from_date` and `to_date`)")->get();
Run Code Online (Sandbox Code Playgroud)

或者也许您可以用作 的DB::raw()第一个参数whereBetween(),但我不确定是否可能,在这种情况下您可以使用orWhere()闭包来编写更具可读性的代码,例如:

SpPrice::whereBetween(DB::raw('"2014-08-15"'), ['from-date', 'to_date'])->orWhere(function($q)
{
    $q->whereBetween(DB::raw('"2014-09-18"'), ['from-date', 'to_date']);
});
Run Code Online (Sandbox Code Playgroud)

但我不太确定这是否有效,请尝试一下。