где между датами в ларавеле 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') 

Теперь, как я могу преобразовать этот запрос в laravel 4 . Я использую Eloquent

 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'); 
  $count = TokenLog::whereBetween(DB::raw('date(created_at)'), [$start_date, $end_date])->get(); 

Вы можете использовать whereRaw() чтобы добавить предложение raw where в запрос, например:

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

Или, возможно, вы можете использовать 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']); }); 

Но я не совсем уверен, работает ли это, дайте ему попробовать.