Мне нужно сравнить даты из моей базы данных с текущим днем. Этот идентификатор мой код, в красноречивом:
$posts = Post::where('date', '=', date('Y-m-d'))->get();
Я хочу получить только сегодняшние сообщения.
Зная, что поле ‘date’ имеет тип Date, как мне заставить это работать?
Я пытался конвертировать date('Y-m-d')
в строку с помощью метода «format», но кажется, что date('Y-m-d')
каким-то образом возвращает логическое значение, и поэтому метод ‘format’ не может быть применен к нему ..
Я использую это для обработки дат моей базы данных
//Get the database date, and format it
$database_date = date_format($database_date, 'Y-m-d');
//Get today date or another date of you choice
$today_date = new DateTime();
//Format it
$today_date = date_format($today_date, 'Y-m-d');
// Use strtotime() to compare the dates or DateTime::diff for more cleaner IMO
$difference = strtotime($today_date) - strtotime($database_date);
Если я получаю то, что вы хотите, вы можете использовать StrToTime функция. Он преобразует строку даты и времени, переданную ей, в метку времени Unix, которую вы можете использовать для сравнения.
Если дата от 2015-10-21
тогда функция вернется 1445385600
и если сегодняшняя дата от date(Y-m-d)
2015-10-31, то функция вернется 1446249600
так что вы можете легко сравнить их.
$var1 = strtotime('2015-10-21');
$var2 = strtotime('2015-10-31');
Тогда сравнение может быть сделано как if($var1 == $var2)