我希望将此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
答案 0 :(得分:3)
您对需要ActiveDataProvider
的评论可能不正确,大多数Yii小部件只需要CDataProvider
的实例,SQLDataProvider和ActiveDataProvider都是。如果您确实需要活动记录模型,您可以通过SQL选择活动记录模型:
$models = MyModel::model()->findAllBySql($sql);
然后在像这样的数据提供程序中使用它们:
$data = CArrayDataProvider($models);