개발자

라라벨 enum 타입 havingRaw절 사용방법 도와주세요ㅠㅠ

2022년 12월 29일조회 133

안녕하세요 :) 현재 라라벨로 프로젝트를 하고있습니다. havingRaw을 사용하는데 다른 타입들의 데이터들은 다 잘 작동하는데 데이터타입이 enum인 것만 작동을 안합니다. 그러나 아래의 sql문은 하이디sql 에서 실행이 잘 됩니다. SELECT order_id AS cnt FROM test_table WHERE mall_id = 'test_mall' AND user_id = 'test_user' GROUP BY order_id HAVING MIN(type) = 'p' 데이터 타입은 아래와 같습니다. order_id = varchar mall_id = varchar user_id = varchar type = enum $row= DB::table("test_table") ->select(DB::raw('order_id as cnt')) ->where("mall_id", $test_mall) ->where("user_id", $test_user) ->groupBy('order_id') ->havingRaw('MIN(type) = p') ->get(); 해당 쿼리빌더에 잘못된 점이 있을까요??

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

문석기님의 프로필 사진

해당 sql에 대한 리턴값이 로그에 출력되었을텐데 해당 내용은 없나요? 라라벨을 잘몰라서 답변달기에 조심스럽지만 sql 자체가 문제가 없지만 프레임워크에서 돌때 에러가 났다면 프레임워크에서 빌드한 쿼리가 위의 SQL과 다를 것이라 예상이 됩니다. havingRaw('MIN(type) = p') <- 위 쿼리에서는 MIN(type) = 'p' 의 형태인데 혹시 'MIN(type) = p' <- 이부분이 MIN(type) = p 이렇게 빌드된게 아닐까요?

쭈니님의 프로필 사진

쭈니

지란지교소프트2022년 12월 30일

최선의 선택은 아닐 수 있겠지만 쿼리문이 아닌 collection 함수를 사용하는 것도 방법일 것 같네요. $row= DB::table("test_table") ->select(DB::raw('order_id as cnt')) ->where("mall_id", $test_mall) ->where("user_id", $test_user) ->groupBy('order_id') ->get(); $filtered = $row->map(function ($data) { return $data->filter(function ($row) { return $row['type'] === 'p'; }); });

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!