如何将此查询转换为yii查询?

时间:2013-02-13 05:26:46

标签: php mysql yii

我希望将此Sql命令转换为yii cactivedataprovider格式,以便我可以使用此条件提供dataprovider。

  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 

1 个答案:

答案 0 :(得分:3)

您对需要ActiveDataProvider的评论可能不正确,大多数Yii小部件只需要CDataProvider的实例,SQLDataProvider和ActiveDataProvider都是。如果您确实需要活动记录模型,您可以通过SQL选择活动记录模型:

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

然后在像这样的数据提供程序中使用它们:

$data = CArrayDataProvider($models);