首页 > 解决方案 > Laravel:将 Where 子句添加到附加的自定义属性

问题描述

我添加了一个自定义属性年龄(以月为单位),例如:

//铸造以便我可以使用Carbon实例

protected $dates = ['date_of_birth'];

//返回月龄

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

然后我附加了年龄,以便我可以在全球范围内使用年龄,例如:

protected $appends = ['age'];

我现在需要使用年龄月份来生成基于年龄月份显示的报告:

如何根据用户集合中的年龄进行过滤?

//一般设置

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

$users = User::get();

$requiredDetail = [];

尝试 1

我尝试使用where子句但不工作

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;
    });
}

问题是如何在从集合中检索演员年龄后对其进行过滤?

标签: phplaraveleloquent

解决方案


使用收集方法whereIn()

$usersCertainAge = $users->whereIn('age', $ages);

推荐阅读