3

この 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 
4

1 に答える 1

3

ActiveDataProviderほとんどの Yii ウィジェットは、SQLDataProvider と ActiveDataProvider の両方であるインスタンスを必要とするだけですCDataProviderただし、アクティブなレコード モデルが本当に必要な場合は、次のように SQL 経由でアクティブなレコード モデルを選択できます。

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

そして、次のようにデータ プロバイダーで使用します。

$data = CArrayDataProvider($models);
于 2013-02-13T08:46:22.647 に答える