본문 바로가기
카테고리 없음

Eloquent ROM) When 의 파라미터 값이 0일 경우 찾아오지 못하는 오류 -> strlen() 사용

by Sein_ 2023. 12. 19.
728x90

문제

 

$deliveryState 값이 0일 경우 찾아오지 못하는 문제 발생.

 

            ->when($deliveryState, function (Builder $builder) use ($deliveryState){
                $builder->where('delivery_state', (int) $deliveryState);
            })

 

when 은 값이 true 인지 false 인지에 따라 실행이 되므로 0은 false, 따라서 실행이 안된다.

 

해결 (추가 문제 발생)

            ->when($deliveryState !== '', function (Builder $builder) use ($deliveryState){
                $builder->where('delivery_state', $deliveryState);
            })

 

$deliveryState 의 값이 '' 이 아닌 경우를 타면 true 로 판정되어 실행된다.

 

 

추가문제 내용

 

처음에 페이지 접속시 null 이여서 !== 사용시 문제가 발생한다.

선배 피드백: strlen() 을 사용하면 값이 null 혹은 '' 일 경우 false 를 반환한다.

            ->when(strlen($deliveryState), function (Builder $builder) use ($deliveryState){
                $builder->where('delivery_state', $deliveryState);
            })