Yii Framework Forum: Problema Con Active Records - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problema Con Active Records Rate Topic: -----

#1 User is offline   diegop 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 24-November 11

Posted 15 November 2012 - 04:59 AM

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!!
0

#2 User is offline   robregonm 

  • Expert Yii Developer
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 591
  • Joined: 30-July 09
  • Location:Colombia

Posted 15 November 2012 - 08:38 AM

Si está desarrollando un sistema de gestión de permisos, no sería mejor utilizar alguno que ya esté probado?
Por poner un ejemplo: Cruge (que tiene TODA su documentación en español y ha comprobado ser bastante estable)
Hay otras alternativas como RBAM, Rights, SRBAC, entre otros.
Ricardo Obregón

YiiFramework en Español - http://yiiframework.co/ - http://yiiframeworkenespanol.org/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx 1.4, MySQL(MariaDB & PerconaDB), PostgreSQL 9, Yii 2.0-dev.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#3 User is offline   robregonm 

  • Expert Yii Developer
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 591
  • Joined: 30-July 09
  • Location:Colombia

Posted 15 November 2012 - 08:51 AM

En cuanto al problema de los campos foráneos, se agregan: with y together.
  • With(<array de relaciones>): para indicarle a la función que debe incluir en la consulta algunas relaciones. Útil para lazy loading.
  • Together(): Para traer todo en una misma consulta. Útil para eager loading. (No puede/debería ir sin with)

Un detalle que cabe anotar es que las asignaciones no son acumulativas... es decir que si escribo sobre "with".. y luego vuelvo a asignarlo, entonces lo anterior se pierde. With es una variable más que se usa cuando se ejecuta la consulta y no un función que va acumulando lo q se asigna.

Saludos
Ricardo Obregón

YiiFramework en Español - http://yiiframework.co/ - http://yiiframeworkenespanol.org/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx 1.4, MySQL(MariaDB & PerconaDB), PostgreSQL 9, Yii 2.0-dev.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#4 User is offline   diegop 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 24-November 11

Posted 15 November 2012 - 08:59 AM

gracias por tu respuesta, y si, tenés razón, quizás fue poco feliz de mi parte usar esas tablas de ejemplo, pero realmente me resultaría muy instructivo saber como resolverlo, ya que entre otras cosas me permitiría conocer mejor como funciona el framework.
gracias nuevamente por cualquier ayuda que me puedan brindar.
Diego
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users