2013-02-13 3 views
3

이 Sql 명령을 yii cactivedataprovider 형식으로 변환하여 dataprovider에이 기준을 제공 할 수있게하려고합니다. ActiveDataProvider 필요에 대한이 쿼리를 yii 쿼리로 변환하는 방법?

SELECT * 
    FROM (

    SELECT (

    CASE WHEN product_name LIKE '%nokia%' 
    THEN 1 
    ELSE 0 
    END + 
    CASE WHEN product_name LIKE '%lumia%' 
    THEN 1 
    ELSE 0 
    END + 
    CASE WHEN product_name LIKE '%800%' 
    THEN 1 
    ELSE 0 
    END 
    ) AS numMatches, product_name 
    FROM Production 
    ) AS t 
    WHERE numMatches >0 
    ORDER BY numMatches DESC 
+0

당신이 시도 되세요' CSqlDataProvider' http://www.yiiframework.com/doc/api/1.1/CSqlDataProvider? 아니면이 옵션이 아닌가요? – topher

+0

위젯에 전달되는 CActiveDataProvider가 필요합니다. – user1532043

답변

3

귀하의 의견은 YII가 SQLDataProvider 및 ActiveDataProvider 모두가 CDataProvider의 인스턴스에게 필요한 위젯 가장 가능성이 사실이 아니다. 당신이 정말 비록 액티브 레코드 모델이 필요한 경우와 SQL을 통해 액티브 레코드 모델을 선택할 수 있습니다

$models = MyModel::model()->findAllBySql($sql); 

그리고 다음과 같은 데이터 공급자에서 사용 :

$data = CArrayDataProvider($models); 
+0

$ sql이 방금 전한 원시 mysql 명령이 될 것입니까? – user1532043

+0

예, 결과를 ActiveRecord 모델로 구문 분석합니다. – Paystey

관련 문제