2016-10-09 3 views
0

Ich benutze Yii2 und für meine Datentabelle brauche ich Daten als kategorisierte und begrenzende Daten pro Kategorie. Um das Ergebnis zu erreichen, habe ich findBySql() verwendet, aber es liefert immer volle Ergebnismenge von diesem Modell .findBySql in Yii2 nicht zurück erwartetes Ergebnisset

Es funktioniert perfekt, aber ich will es so mit dem Modell verwenden, kann ich Instanz

Ich möchte nur folgende Abfrage mich yii \ db \ ActiveQuery Instanz mit einer bestimmten SQL-Anweisung geben.

Auch ich brauche Instanz so einfach Ergebnis als einfache Array nicht benötigt.

Ich möchte Ergebnis mit max 10 Zeilen pro Kategorie ID oder ID.

Hier 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

Ein erster Blick ich denke, es seltsam die Modelle von einem ausgewählten dieser Art correcti zu bekommen .. aber trotzdem .. Bitte erklären Sie, was das Problem ist .. Sie haben einen Fehler.? hast du ein falsches ergebnis? ... Sie haben kein Ergebnis? habe den Inhalt von $ ModelTest gesehen? – scaisEdge

+0

Es gibt mir PDO Ausnahme für SQL. Aber funktioniert gut in phpmyadmin. Also nur ein Problem mit Yii findBySql(). –

+0

Obvous, die in phpadmin arbeiten kann .. Ihr ist ein Shell-SQL-Befehl .. aber das funktioniert nicht wie in yii2 .. zeigen Sie den genauen Fehler, den Sie in yii2 haben bitte – scaisEdge

Antwort

0

Bitte verwenden Datenbank Access Object Beispiel:

$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();