2016-10-09 81 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();