Laravel среднее значение по аксессору - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужно рассчитать средний возраст пользователя.

вот мой код доступа

public function getAgeAttribute()
{
    if ($this->birthday)
        return Carbon::parse($this->birthday)->age;
    else
        return 'Unknown';
}

Как я могу рассчитать средний возраст от пользователя? Спасибо за любую помощь ..

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

В вашем Пользователе. php:

public function getAgeAttribute()
{
  if ($this->birthday)
    return Carbon::parse($this->birthday)->age;
  else
    return 'Unknown';
}

Если вы хотите рассчитать средний возраст ВСЕХ пользователей, разместите его там, где вам это нужно:

User:all()
    ->where('age', '!=', 'Unknown')
    ->avg('age');

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

Если атрибут birthday находится в таблице пользователей, будет более эффективно не выбирать пользователей без даты рождения:

User:whereNotNull('birthday')
    ->get()
    ->avg('age');
0 голосов
/ 24 апреля 2020

Возраст свойства для объекта Carbon не существует.

Вы можете использовать diffInYears с фактической датой для вычисления возраста

public function getAgeAttribute()
{
    if ($this->birthday)
        return Carbon::now()->diffInYears(Carbon::parse($this->birthday));
    else
        return 'Unknown';
}

В вашей модели вы можете добавить защищенное свойство $ date для того, чтобы верните объект Carbon и не анализируйте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...