Краткий:
У меня есть пользовательский столбец birthdate в моей таблице users. Дата рождения пользователя имеет формат даты по умолчанию: Y-m-d. Кроме того, у меня есть собственный мутатор для определения возраста пользователя в модели User.
Код мутатора:
public function getAgeAttribute($value) {
if ($this->birthday !== null) {
$bday = new \DateTime("{$this->birthday}");
$today = new \Datetime(date('Y-m-d'));
$diff = $today->diff($bday);
return $diff->y;
}
return null;
}
Вопрос:
Как получить пользователей по возраст, используя модель User?
Да конечно @hassan
какой тип столбца? дата / время / дата?
Строка типа столбца. Если вы думаете, что измените тип поля на дату со строки, я изменю его. @hassan
вы можете использовать для этого локальную область видимости.






Просто возьмите сегодняшнюю дату и вычтите количество лет. затем сравните это с днями рождения
Users::where('birthday', '<=', date('Y-m-d', strtotime('-20 years')))->get();
Добавляя к этому ответу, эта логика может быть заключена в локальную область видимости, определенную в модели User.
Вы можете использовать метод CollectiongroupBy для группировки пользователей по их возрасту.
$users = User::all()->groupBy(function($user) {
return $user->age;
});
Затем вы можете получить всех пользователей для определенного пользователя, как это.
$users->get(20);
Надеюсь, это то, что вы ищете.
Надеюсь, это поможет вам, функция date() - это функция php, которая преобразует строку в дату и время.
$users = User::where('birthdate' , '<', date('Y-m-d', strtotime('your input field name')))->get();
Если вы используете MySQL, есть альтернатива:
$users = User::whereDate('birthdate' , '<', \DB::raw("CURDATE()-INTERVAL 20 YEAR"))->get();
Мы также можем сделать это таким образом, мы увеличим еще на один год и будем искать между датами, подобными этой
$from = Carbon::today()->subYears($request->age);
$to = Carbon::today()->subYears(($request->age)+1);
$users->whereBetween('birth_date',[$to, $from]);`
я думаю, что это лучший подход
что значит
by age? вы имеете в виду, что хотите получить всех пользователей старше 20 лет?