Laravel, где возрастная оговорка - PullRequest
0 голосов
/ 08 октября 2019

У меня есть модель Студента, и у нее есть такие свойства, как полное имя, дата рождения, ...
дата рождения - это столбец типа даты.

как я могу отфильтровать своих учеников и найти этих учеников с более чем20 лет?

что-то вроде:

$students = Student::whereAge('birthdate', '>=', 20)->get();

Ответы [ 3 ]

2 голосов
/ 08 октября 2019

Вы не можете использовать whereAge, так как Age должен быть столбцом, существующим в вашей базе данных в этом случае.

Вы можете попробовать это вместо этого:

$students = Student::whereYear('birthdate', '>=', now()->subYears(20)->year)->get();

Возможно, даже лучшесравнить точную дату 20 лет назад:

$students = Student::whereDate('birthdate', '>=', now()->subYears(20))->get();
1 голос
/ 08 октября 2019

Вы можете удалить -20 лет от сегодняшней даты, а затем сравнить ее с датой рождения. Вот так:

$date = date('Y-m-d', strtotime(date('Y-m-d').' -20 year'));

$students = Student::whereDate('birthdate', '<', $date)->get();

Дайте мне знать, помогло ли это.

1 голос
/ 08 октября 2019

Использование необработанного SQL:

$students = Student::whereRaw('TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) >= 20'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...