자문자답입니다.
$cunt = Item::select(DB::raw('floor((year(now()) - year(users.birthday))/10)*10 as age'))
->join('users','users.id','=','items.user_id')
->where('action',$action)
->where('age',$age)
->count();
where 문에서 age를 가져올 수가 없어서 고민했는데, cursor()를 통해 문제를 해결했습니다
$ages = [
20 => [], 30 => [], 40 => [], 50 => [],60 => []
];
foreach($ages as $age){
foreach (Item::ACTIONS as $action => $val){
$cunt = Item::select(DB::raw('floor((year(now()) - year(users.birthday))/10)*10 as age'))
->join('users','users.id','=','items.user_id')
->where('action',$action)
->where('age',$age)
->count();
$ages[$age][] = ["cnt" => $cunt, "name" => $val['name']];
}
$ages[$age] = collect($ages[$age])->sortByDesc('cnt')->values();
}
위처럼 ages라는 빈 배열에 키와 value값을 넣어줘야 하는데 쿼리 자체에서 막히고있습니다..
USER테이블에 있는 birthday를 age로 변환시키고 해당 item의 카운터를 구해 연령대별 아이템의 순위를 구해야 하는데 age 컬럼을 where문에서 찾을 수 없다고 나와서..
고수님들의 도움이 필요합니다.ㅠㅠ