2015-07-24 4 views
0

В моем приложении Laravel 5 у меня есть отношения, и из этого отношения «один ко многим» я хочу запросить и получить только результаты, отличающиеся датой между их create_date и произвольная дата составляет от 0 до 2 дней.Рассчитать дату diff в Eloquent, где предложение Laravel 5

Если вам нужно, я могу показать вам псевдокод, даже если я думаю, что это ясно, что мне нужно.

Спасибо!

ответ

2

Просто создайте произвольную дату, используя углерод (как вы используете Laravel):

$start = Carbon\Carbon::create(year,month,day); 

$end = $start->copy()->addDays(2); 

и немного DB :: сырец в смеси, форматировать created_at поле для ваших нужд:

Model::where(DB::raw('DATE_FORMAT(created_at,"%Y-%m-%d")'),'>=',$start)->where(DB::raw('DATE_FORMAT(created_at,"%Y-%m-%d")'),'<=',$end)->get();  

Вот и все.

+0

К примеру, у меня есть это где положение: -> где ('updated_at', '> =', новый \ DateTime ($ lastDateCheckin)) Где $ lastDateCheckin моя произвольная дата. Если я сравниваю с "updated_at", как это, он не работает, как я хочу, потому что он считает также минут и секунд. Я хочу рассмотреть только update_at Y-m-d. – Bellots

+0

Вызов setTime (0, 0, 0) в объекте datetime, прежде чем передать его в запрос для нижнего конца диапазона или setTime (23,59,59) для верхнего конца диапазона. created_at хранится в базе данных как дата + время, поэтому вам нужно также учитывать временную часть. –

+0

Скорректированный ответ в соответствии с вашим описанием. @Bellots –

Смежные вопросы