우선 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이 나오는 이유를 잘 모르겠습니다.
혹시 제가 무언가를 잘못 알고 있는것일까요?
고수님들의 도움 부탁드립니다.
SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'test' 의 결과가 0 이 나와야 하는데...1 이 나와서요..^^
왜 그러는지 좀더 연구중입니다. ^^
/system/Database/BaseBuilder.php 에 보시면 getCompiledSelect 함수가 있습니다.
그곳에 보면 public function getCompiledSelect(bool $reset = true): string 라고 되어있지요.
즉, getCompiledSelect 함수 호출 시점에서 쿼리 리셋되었기 때문에 0이 안나오고 1이 나오는겁니다.
전체 데이터 수를 리턴하니까요.
1개 있어서 1이라고 나온거 아닌가요?
SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'test' <- 이 결과는 몇개 나오는건가요?
SELECT * FROM `ilgram_member` WHERE `mb_user_id` = 'manager' 이어야 원하시는 결과가 나오겠네요. ^^