2016-10-09 83 views
0

我使用Yii2和我的数据表中,我需要数据分类和限制每个类别的数据,为实现结果它我已经使用findBySql(),但它总是返回完整的结果从模型设定。findBySql在Yii2没有返回预期的结果集

它的工作完美,但我想用模型中使用它,这样我可以有实例

我只是想下面的查询给我一个给定的SQL语句警予\ DB \ ActiveQuery实例。

另外我需要的实例,所以只是简单的数组结果不需要。

我想每个类别id或id最多有10行的结果。

这里是SQL

$sql = 'SELECT * 
FROM (
SELECT t.* , @currcount := IF(@currvalue = t.id, @currcount +1, 1) AS rank, @currvalue := t.id AS whatever 
FROM test t 
ORDER BY t.id ASC 
) AS whatever'; 

$modelTest = Test::findBySql($sql)->all(); 
+1

一个乍看之下我觉得很奇怪拿到的型号,从选择这种类型的correcti ..但不管怎么说..请解释有什么问题..你有错误。?你有错误的结果? ...你没有结果?有没有看过广告$ modelTest的内容? – scaisEdge

+0

它给我PDO异常的SQL。但在phpmyadmin中工作正常。所以只是Yii findBySql()的问题。 –

+0

Obvous可以在phpadmin工作..你是一个shell SQL命令..但这无法正常工作,在yii2 ..你展示yii2请 – scaisEdge

回答

0

请使用数据库访问对象 例子:

$sql = 'SELECT * 
FROM (
SELECT t.* , @currcount := IF(@currvalue = t.id, @currcount +1, 1) AS rank, @currvalue := t.id AS whatever 
FROM test t 
ORDER BY t.id ASC 
) AS whatever'; 

$data= Yii::$app->db->createCommand($sql) 
      ->queryAll();