Php 在拉拉维尔4号的日期之间

Php 在拉拉维尔4号的日期之间,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我有一个这样的疑问 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') 现在我如何在laravel4中转换此查询。我使用elount您可以使用whereRaw()将原始where子句添加到查询中,例如: $results = SpPrice::whereRaw("('2014-

我有一个这样的疑问

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')
现在我如何在
laravel4
中转换此查询。我使用
elount

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

$results = SpPrice::whereRaw("('2014-08-15' between `from_date` and `to_date`) || ('2014-09-18' between `from_date` and `to_date`)")->get();
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']);
});
或者您可以使用
DB::raw()
作为
whereBetween()
的第一个参数,但我不确定是否可能,在这种情况下,您可以使用带有闭包的
或where()
来编写更可读的代码,例如:

$results = SpPrice::whereRaw("('2014-08-15' between `from_date` and `to_date`) || ('2014-09-18' between `from_date` and `to_date`)")->get();
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']);
});
但我不确定这是否有效,试试看

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();

也许你可以试试这个

在你的例子中,你正在检查相同日期范围的
from_date
to_date
。如果总是这样,你可以让这个查询更“雄辩”:

SpPrice.php模型中:

public function getPriceByDate($fromDate, $toDate)
{
    $range = [$fromDate, $toDate];
    return $this
        ->whereBetween('from_date', $range)
        ->orwhereBetween('to_date', $range)
        ->get();
}
然后,要从控制器调用此方法:

    $prices = new SpPrice;
    $price = $prices->getPriceByDate('2014-08-15', '2014-09-18');

你尝试了什么没有用?@mbouzahir我更新了我的问题。请参阅更新问题“我如何将此
select*from calendar\u schedules构建为cs,其中1446377416介于cs.from\u booking\u date和cs.to\u booking\u date之间这就是它的工作原理:
$schedule=DB::table('calendar_schedules')->whereRaw('whereRaw('whereRaw('before
from_booking_date`和
to_booking_date
),[$request->input('startDate'),$request->input('endDate')->first()`