CI 묻고 답하기

제목 ci4 에서 $builder->countAllResults() 결과값이 원하는대로 나오지 않아서 여쭤봅니다.
카테고리 CI 4 관련
글쓴이 지누으누 작성시각 2020/09/17 13:18:47
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 10389   RSS

우선 ilgram_member 이라는 테이블이 존재하며 데이터로는 "manager"라는 아이디를 갖는 레코드가 하나 존재합니다. 

조건에 따른 결과값 개수를 나타내는 countAllResults()을 확인하고자 다음과 같은 코드를 작성하였습니다.

        $builder->select('*');

        $builder->where(['mb_user_id' => "test"]);

        echo ("query:" . $builder->getCompiledSelect());

        echo ("<br>");

        echo ("total count:" . $builder->countAllResults());

 

이런식으로 작성 후 결과값을 확인하였는데, 

query:SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'test'

total count:1

이렇게 결과값이 나왔습니다.

 

제가 알기로는 countAllResults() 는 where 절에 따른 결과개수가 노출이 된다고 알고 있는데, total count 값이 0 아닌 1이 나오는 이유를 잘 모르겠습니다.

혹시 제가 무언가를 잘못 알고 있는것일까요?

고수님들의 도움 부탁드립니다.

 


첨부파일 쿼리.jpg (16.9 KB)
 다음글 ci3 mssql 프로시저 output 출력 도움요청합... (5)
 이전글 외부DB 연결 (2)

댓글

변종원(웅파) / 2020/09/17 16:28:19 / 추천 0

1개 있어서 1이라고 나온거 아닌가요?

SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'test' <- 이 결과는 몇개 나오는건가요?

SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'manager' 이어야 원하시는 결과가 나오겠네요. ^^

지누으누 / 2020/09/17 16:35:16 / 추천 0

SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'test' 의 결과가 0 이 나와야 하는데...1 이 나와서요..^^

왜 그러는지 좀더 연구중입니다. ^^

PureAni / 2020/09/17 17:16:33 / 추천 0

/system/Database/BaseBuilder.php 에 보시면 getCompiledSelect 함수가 있습니다.

그곳에 보면 public function getCompiledSelect(bool $reset = true): string 라고 되어있지요.

즉, getCompiledSelect 함수 호출 시점에서 쿼리 리셋되었기 때문에 0이 안나오고 1이 나오는겁니다.

전체 데이터 수를 리턴하니까요.

지누으누 / 2020/09/17 18:11:50 / 추천 0
아...그렇군요...ㅠㅠ... 감사합니다.