yii自定义查询和CSqlDataProvider

yii自定义查询和CSqlDataProvider,sql,yii,ranking,Sql,Yii,Ranking,有人能告诉我如何使用CSqlDataProvider(yii框架(php))运行这个查询吗 我可以像下面那样做,但是 $sqlProvider = new CSqlDataProvider(' SELECT @rank:=@rank+1 AS rank, nameAndFam FROM user '); 无法初始化设置@rank=0在上述命令之前 我想给我的选择排序,我认为这是个好办法 提前感谢您的回复:)您可以尝试使用YII CreateComnd from Database Acces

有人能告诉我如何使用CSqlDataProvider(yii框架(php))运行这个查询吗

我可以像下面那样做,但是

$sqlProvider = new CSqlDataProvider('
SELECT @rank:=@rank+1 AS rank, nameAndFam
  FROM user
');
无法初始化
设置@rank=0在上述命令之前

我想给我的选择排序,我认为这是个好办法
提前感谢您的回复:)

您可以尝试使用YII CreateComnd from Database Access OBject(DAO),它将提供最低级别的数据库操作,您可以创建任何类型的查询

$sql1 = 'SET @rank=0;';
$sql2 = 'SELECT @rank:=@rank+1 AS rank, fruit, amount
    FROM sales
     ORDER BY amount DESC';
$cmd1 = Yii::app()->db->createCommand($sql1);
$cmd2 = Yii::app()->db->createCommand($sql2);

$cmd1->execute();
$result = $cmd2->query();
之后,您可以使用foreach循环来循环通过该查询返回的对象数组

您可以创建单独的函数,例如:

$cmd->select ='SELECT @rank:=@rank+1'; 
这种方式将使代码更具可读性,但因为您只需要完成这项工作,所以我只提供了纯的、非优化的方式。 希望这能帮你解决这个问题

$cmd->select ='SELECT @rank:=@rank+1';