Получить пользователей по возрасту, используя столбец даты рождения пользователя из таблицы - PullRequest
0 голосов
/ 29 октября 2018

Пояснение:

В моей таблице users есть столбец пользователя birthdate. Дата рождения пользователя имеет формат даты по умолчанию: 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 модель?

Ответы [ 4 ]

0 голосов
/ 29 октября 2018

Если вы используете MySQL, есть и такая альтернатива:

 $users = User::whereDate('birthdate' , '<', \DB::raw("CURDATE()-INTERVAL 20 YEAR"))->get();
0 голосов
/ 29 октября 2018

Вы можете использовать метод Collection groupBy для группировки пользователей по возрасту.

$users = User::all()->groupBy(function($user) {
             return $user->age;
         });

Затем вы можете получить всех пользователей для определенного пользователя, как это.

$users->get(20);

Надеюсь, это то, что вы ищете.

0 голосов
/ 29 октября 2018

Я надеюсь, что это поможет вам, date() функция - это функция php, которая преобразует строку в datetime.

$users = User::where('birthdate' , '<', date('Y-m-d', strtotime('your input field name')))->get();

0 голосов
/ 29 октября 2018

Просто возьмите сегодняшнюю дату и вычтите количество лет. затем сравните это с днями рождения

Users::where('birthday', '<=', date('Y-m-d', strtotime('-20 years')))->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...