2011-02-13 6 views
6

¿Cómo puedo escribir la consultaYii CDbCriteria Ingreso

SELECT * 
    FROM doc_docs dd 
    JOIN doc_access da 
    ON dd.id=da.doc_id 
    AND da.user_id=7 

con CDbCriteria sintaxis?

+0

Problema resuelto. –

+0

¿Quizás compartirá la solución? ¿O aceptar la respuesta si es una solución correcta? – zapadlo

+0

¡Debe compartir su respuesta para ayudar a los demás! – ASD

Respuesta

13

En realidad no puede escribir por completo que, dado que hay que aplicar los criterios para un modelo activerecord para obtener la tabla principal, pero suponiendo que tiene un modelo DocDocs puede hacerlo de esta manera:

$oDBC = new CDbCriteria(); 
$oDBC->join = 'LEFT JOIN doc_access a ON t.id = a.doc_id and a.user_id = 7'; 

$aRecords = DocDocs::model()->findAll($oDBC); 

Aunque podría ser mucho más fácil si usted da a sus DocDocs modelo de una relación con doc_access, entonces usted no tiene que utilizar el dbcriteria:

class DocDocs extends CActiveRecord 
{ 
    ... 

    public function relations() 
    { 
     return array('access' => array(self::HAS_MANY, 'DocAccess', 'doc_id'); 
    } 

    ... 
} 

$oDocDocs = new DocDocs; 
$oDocDocs->id = 7; 
$aRecords = $oDocDocs->access; 

debe darle una idea bastante buena de cómo empezar ...