Я сохранил дату рождения в базе данных MySQL.
table name : **users**
field name : **dob**
теперь я хочу показать возраст на просмотре. Мой запрос:
$user_info = DB::table('users')->select('(year(curdate())-year(dob)) as age')->get();
Я использую Laravel 5.5.
но это создает ошибку. Как рассчитать возраст с помощью конструктора запросов в laravel?






Вы можете использовать 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
Какую ошибку вы получили?