Auswahl aus mehreren Tabellen mit Yii ' s CActiveDataProvider

Ich habe 3 Tabellen: Topics, Users und Details (diese sind einige der Tabellen einer benutzerdefinierten forum)

Topics enthält (neben anderen üblichen Feldern) id (FK) des Benutzers, der Sie erstellt das Thema.
Users enthält nick/pass und die id (PK)
Details enthält (neben anderen üblichen Feldern) id (FK) des Benutzers.

Beziehungen:
Ein Benutzer kann über 1 detail.
Ein Benutzer kann mehrere Themen, aber ein Thema kann nur erstellt werden, durch einen Benutzer.

Thema Beziehungen:

return array(
'user' => array(self::BELONGS_TO, 'User', 'User_iduser'),
);

User relations:

return array(
    'details' => array(self::HAS_ONE, 'Details', 'User_iduser'),
);

Ich versuche zu bekommen eine Liste mit Themen und Benutzer-Informationen (zum Beispiel, sagen wir das Thema Namen und den Namen des Benutzers).

Derzeit habe ich dieses:

$dataProvider=new CActiveDataProvider('Topic', array(
    'criteria'=>array(
    'with'=>array('user.details')
    )
));

Aber wie Sie sich vorstellen können, es funktioniert nicht (gelesen in der es keine Auswahl, nichts von den tbles Benutzer oder Details).

Was ist falsch an meinem code?


+++++++++++++++

Dieser code wählt Felder aus der Tabelle Benutzer (und die Thema-Tabelle):

Topic::model()->with('user')->findAll();

Aber diese nicht auswählen von details, Benutzer und Thema:

Topic::model()->with('user.details')->findAll();

Ausserdem brauche ich einen CActiveDataProvider Lösung, wie ich brauche es für zii-widgets (bedeutet, dass, selbst wenn irgendeine Art von Veränderung auf die Topic::model()->with().... code zu bekommen ist, wählen Sie aus den 3 Tabellen ist es nicht wirklich hilfreich)

EDIT: (SQL log von Yii)

Querying SQL: SELECT COUNT(DISTINCT `t`.`idtema`) FROM `tema` `t`  LEFT
OUTER JOIN `usuario` `usuarioIdusuario` ON
(`t`.`Usuario_idusuario`=`usuarioIdusuario`.`idusuario`)  LEFT OUTER JOIN
`detallesusuario` `detallesusuario` ON
(`detallesusuario`.`Usuario_idusuario`=`usuarioIdusuario`.`idusuario`) 

Querying SQL: SELECT `t`.`idtema` AS `t0_c0`, `t`.`Usuario_idusuario` AS
`t0_c1`, `t`.`Categoria_idcategoria` AS `t0_c2`, `t`.`tema` AS `t0_c3`,
`t`.`fecha_hora` AS `t0_c4`, `usuarioIdusuario`.`idusuario` AS `t1_c0`,
`usuarioIdusuario`.`nick` AS `t1_c1`, `usuarioIdusuario`.`contrasena` AS
`t1_c2`, `usuarioIdusuario`.`email` AS `t1_c3`,
`detallesusuario`.`Usuario_idusuario` AS `t2_c0`,
`detallesusuario`.`nombre` AS `t2_c1`, `detallesusuario`.`apellidos` AS
`t2_c2`, `detallesusuario`.`cumpleanos` AS `t2_c3`,
`detallesusuario`.`telefono1` AS `t2_c4`, `detallesusuario`.`telefono2` AS
`t2_c5` FROM `tema` `t`  LEFT OUTER JOIN `usuario` `usuarioIdusuario` ON
(`t`.`Usuario_idusuario`=`usuarioIdusuario`.`idusuario`)  LEFT OUTER JOIN
`detallesusuario` `detallesusuario` ON
(`detallesusuario`.`Usuario_idusuario`=`usuarioIdusuario`.`idusuario`) 
LIMIT 10
  • HI, Wie hast du dieses problem gelöst. Ich stehe vor demselben Problem
InformationsquelleAutor alexandernst | 2012-09-10
Schreibe einen Kommentar