우선 영어로 죄송합니다. 이걸 좀 도와 줘. 최근에 Yii로 첫 프로젝트를 시작했는데 모든 것이 훌륭하고 프레임 워크가 완벽 해 보이지만 ActiveRecord를 사용하여 데이터베이스에서 레코드를 선택하는 데 약간의 문제가 있습니다.합계가 SQL 쿼리와 Yii ActiveRecord에 결합 된 경우
의 내가 다음 코드했다고 가정 해 봅시다 : 나는 그것을 사용하고 때이
sum(if(points > 0, 1, 0)) as rank_points
에 문제가
$criteria = new CDbCriteria();
$criteria->select = '*, user.*, sum(if(points > 0, 1, 0)) as rank_points, sum(points) as all_points, count(*) as count_all';
$criteria->group = 'user_id';
$criteria->order = 'all_points desc';
$users = Types::model()
->with('user')
->findAll($criteria);
, 내가받을 다음과 같은 오류 :
Active record "Types" is trying to select an invalid column "sum(if(points > 0". Note, the column must exist in the table or be an expression with alias.
문제는이 쿼리가 정확하고 수동으로 사용할 수 있습니다. (시도하지는 않았지만 작동해야한다고 생각합니다) 쿼리 빌더. 나는 AR과 함께 이것을하기로 결심했다. 그래서 여기에 나의 질문이있다; 진술 한대로 이것을 할 수 있습니까? 나는 잘못된 것을하고 있습니까? 아니면 더 복잡한 문제입니까?
미리 답변 해 주셔서 감사합니다.
클래스의 특성으로 rank_points가 정의되어 있습니까? – Skatox
@Skatox 나는 가지고 있지는 않았지만, 정의했다. 그리고 나는 똑같은 오류가있다. 그 외, 모델의 all_points 및 count_all 속성을 정의했으며 올바르게 작동합니다. –