Laravel: добавить пункт «Где» к добавленному пользовательскому атрибуту - PullRequest
1 голос
/ 20 марта 2020

Я добавил пользовательский атрибут age (в месяцах), например:

// Приведен, чтобы я мог использовать экземпляр Carbon

protected $dates = ['date_of_birth'];

// Возвращает age в месяце

public function getAgeAttribute(){
    if(empty($this->date_of_birth){
        return null;
    }
    return $this->date_of_birth->diffInMonths();
}

Затем я добавил возраст, чтобы я мог глобально использовать age , например:

protected $appends = ['age'];

Теперь мне нужно использовать месяц возраста при создании отчета, который отображается на основе возраст месяц:

Как я могу фильтровать на основе возраст в коллекции пользователей?

// Общая настройка

$ages = [10, 20, 30, ...];

$users = User::get();

$requiredDetail = [];

Попытка 1

Я пытался использовать , где предложение, но не работает

foreach($ages as $age){
    $requiredDetail[$age] = $users->where('age', $age)->count();
} 

Попытка 2

Я пытался использовать фильтр коллекции, но он не работает

foreach($ages as $age){
    $requiredDetail[$age] = $users->filter(function($user) use ($age){
        return $user->age == $age;
    });
}

Вопрос в том, как я могу отфильтровать приведенный возраст после извлечения его из коллекции?

Ответы [ 2 ]

1 голос
/ 20 марта 2020

использование WhereIn

$requiredDetail = $users->whereIn('age', $age)->count();
1 голос
/ 20 марта 2020

Используйте метод сбора whereIn().

$usersCertainAge = $users->whereIn('age', $ages);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...