Как рассчитать возраст с помощью конструктора запросов в laravel?

Я сохранил дату рождения в базе данных MySQL.

table name : **users**
field name : **dob**

теперь я хочу показать возраст на просмотре. Мой запрос:

$user_info = DB::table('users')->select('(year(curdate())-year(dob)) as age')->get();

Я использую Laravel 5.5.

но это создает ошибку. Как рассчитать возраст с помощью конструктора запросов в laravel?

Какую ошибку вы получили?

Gabriel Heming 02.08.2018 14:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
3 332
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать selectRaw, а затем использовать функцию mysql, подобную этой

$user_info = DB::table('users')
                ->selectRaw("TIMESTAMPDIFF(YEAR, DATE(dob), current_date) AS age")
                ->get();

вы можете определить функцию в своей модели следующим образом

public function age() {
    return $this->dob->diffInYears(\Carbon::now());
}

после этого вы можете называть это так

{{ $user->age() }}}
Ответ принят как подходящий

Я рекомендую вам сделать кастомный атрибут в вашей модели app/User.php.

Например:

В вашем User.php

public function getAgeAttribute() {
    return $this->dob->diffInYears(\Carbon\Carbon::now());
}

В controller и / или view теперь вы можете получить доступ к этому методу как к атрибуту, выполнив следующие действия:

Auth::user()->age;

Это установит атрибут в вашей модели пользователя на основе getAgeAttribute().

Для получения дополнительной информации взгляните на: https://laravel.com/docs/5.6/eloquent-mutators#accessors-and-mutators

Другие вопросы по теме