CodeIgniter를 사용하고 있습니다.CodeIgniter 활성 레코드 캐시를 하나의 객체에만 제한하십시오.
현재 사용자의 모델과 사용자 목록의 모델이 있다고 가정 해 보겠습니다. 내가하지 않으면, $ this-> db-> count_all_results (이 함수는 활성 레코드 함수를 리셋)를 사용하여 다시 적용해야하기 때문에 WHERE 문을 캐싱한다. 나는 물론 $ this-> db-> get ('users')도 필요로한다. 사용자를 필터링 할 사용자 목록 모델
함수는 다음과 같다 :
public function onlyWomen()
{
$this->db->start_cache();
$this->db->where('gender', '1');
$this->db->stop_cache();
}
문제는 내가 또한 현재 사용자에 대한 모델로 일하고 있다는 것입니다. 나는 현재 사용자 모델로 복사하기 위해 사용자 목록 모델에서 설정 한 캐시를 의심합니다. (현재 사용자 모델로 시작할 때 캐시를 플러시 할 수 없기 때문에 둘 다 동시에 작업하고 있습니다.) 나는 활성 레코드 캐시가 호출 될 때 객체에 있어야한다고 생각했습니다.
이 문제를 어떻게 해결합니까?
는 (내 영어는 나쁘지 않다, 그러나이 복잡한 물건과 나와 함께 어쩌면 객체/클래스, 난 당신이 내 문제 ^^ 이해 희망을 완전히 이해하지)는로드 할 때
3 개의 선택적인 WHERE 문이 있기 때문에 그렇게하지 않습니다. 가능한 모든 조합을 만들려면 8 가지 방법을 사용해야합니다 (내 방식대로 할 때 4 가지 방법). 하지만 답을 주셔서 감사합니다. 제가 할 수있는 최선의 방법은 동시에 모델을 사용하지 않는 것입니다. – Gersom
추가 할 절을 결정하는 선택적 매개 변수를 사용할 수 있습니다. 예를 들어 보겠습니다. – birderic
예비 작업. 나는 당신이 의미하는 것을 이해한다;) 그러나 문제는 어쨌든 WHERE 절을 적용한 후에 count_all_results를 수행하기 때문에 캐싱 함수가 필요하다는 것이다. 활성 레코드 절이 다시 설정됩니다. 하지만 여전히 WHERE 문과 함께 get()을 수행하는 데 한계가 있습니다. (그리고 count_all_results가 아닌 get()에 대한 제한이 필요하기 때문에 이전에 count_all_results를 수행해야합니다) – Gersom