2016-10-09 4 views
0

私はYii2を使用していますが、私のデータテーブルにはカテゴリ別にデータが必要ですが、結果を得るためにはfindBySql()を使用しましたが、 。Yii2のfindBySqlは予期された結果セットを返さない

それは完璧に働いていますが、私はそう私は

インスタンスを持つことができるモデルとそれを使用したい私はちょうど次のクエリは、指定されたSQL文で私のYii \ 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

それは私にsqlのPDO例外を与えます。しかし、phpmyadminで正常に動作します。だからちょうどYii findBySql()の問題。 –

+0

phpadminで動くことができるObvous ..あなたはシェルの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(); 
関連する問題