Hola a todos, los molesto para ver si pueden ayudarme con este problema con el cual llevo muchos días sin poder resolverlo, tengo 2 tablas con sus respectivos modelos:
Users
Id - username
1 - usuario1
2 - usuario2
3 - usuario3
4 - usuario4
Authassignment
itemname - userid (fk de la tabla tbl_users)
rol_a - 1
rol_c - 4
necesito generar un CActiveDataProvider desde el modelo "Authassignment" que muestre:
username - itemname
usuario1 - rol_a
usuario2 - null
usuario3 - null
usuario4 - rol_c
el problema es que hasta ahora lo máximo que logré (con el enfoque lazy loading) es que me muestre lo siguiente:
username - itemname
usuario1 - rol_a
- null
- null
usuario4 - rol_a
pero no consigo incluir en el CActiveDataProvider generado los nombres de los usuarios que no tienen un elemento de la tabla Authassignment asignado (que no tienen una fk asociada en la tabla Authassignment).
Desde la consola el sql generado por el application log de yii(SELECT t
.itemname
, t
.userid
,
t
.bizrule
, t
.data
FROM authassignment
t
RIGHT JOIN
tbl_users ON t.userid=tbl_users.id LIMIT 10) muestra los datos tal como los necesito:
username - itemname
usuario1 - rol_a
usuario2 - null
usuario3 - null
usuario4 - rol_c
Que estoy haciendo mal?
detallo la relación en el modelo Authassignment:
return array(‘user’=>array(
self::BELONGS_TO, 'Users', 'userid'),
),
);
Detallo el método search en el modelo Authassignment:
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('itemname',$this->itemname,true);
$criteria->compare('userid',$this->userid,true);
//$criteria->with = array('user'=>array('joinType'=>'RIGHT JOIN',));
//$criteria->with = array('user');
$criteria->join = "RIGHT JOIN tbl_users ON t.userid=tbl_users.id";
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Desde ya muchas gracias por su ayuda.
Saludos a todos!!