2012-12-18 4 views
0

사용자가 만든 레코드가있는 인덱스를 쿼리하고 있습니다. 내 응용 프로그램에는 여러 유형의 사용자가있을 수 있으므로이 테이블에는 CreatedByType 및 CreatedById가 있습니다.스핑크스 - 여러 속성으로 필터 제외

특정 특정 사용자가 만든 결과를 제외하고 싶습니다.

// Exclude $userId from the results 
$this->Client->SetFilter('CreatedById', $userId, true); 

그러나 이것은 분명히 ID가 $userId 인 모든 사용자 유형의 결과를 제외합니다. 마찬가지로 :

// Exclude $userId from the results 
$this->Client->SetFilter('CreatedByType', $userType, true); 

$userType의 모든 사용자에게서 결과가 제외됩니다.

제약 조건에 두 가지 속성을 결합하고 AND 쿼리를 수행하려면 어떻게해야합니까?

감사합니다.

답변

1

가상 결합 속성을 계산하고이를 필터링 할 수 있습니다.

$this->Client->setSelect("*, IF(CreatedById=$userId,1,0)+IF(CreatedByType=$userType,1,0) as myfilter"); 
$this->Client->setFilterRange('myfilter',0,1); 

(0도 유사한 방법 1, 2를 모두 유사한. 그래서 setfilterrange 수단 일치 한 수단 곳 모두 일치 문서 제외!)

관련 문제