질문을 삭제하지 말아주세요.!
 
1
0
-1

$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문에서 찾을 수 없다고 나와서..

고수님들의 도움이 필요합니다.ㅠㅠ

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      자문자답입니다. 


       $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()를 통해 문제를 해결했습니다

        CommentAdd your comment...