[RESUELTO] Relations

Buenas!

les cuento un poco: tengo una tabla Dominios (idDominio(pk),dominio,valor,descripcion) en la cual mantengo datos como TIPO_DOCUMENTO,TIPO_LOGICO,SEXO

ejemlpo

id,dominio,valor,descripcion

1,SEXO,FEM,Femenino

2,SEXO,MAS,Masculino

3,TIPO_LOGICO,1,Verdadero

4,TIPO_LOGICO,0,Falso

y tengo tablas que usan estos dominios

ejemplo

tabla Personas campo sexo (referencia al dominio SEXO) y campo activo (referencia al dominio TIPO_LOGICO)

pero en la tabla Personas no tengo el campo "dominio"

Personas (

idPersona(pk)

tipo_documento

nro_documento

nombre

sexo (valor posible FEM,MAS) en referencia al dominio SEXO

activo (valor posible 0 o 1) en referencia al dominio TIPO_LOGICO

fecha_nacimiento

)

bien

lo que quiero es crear la relacion en el modelo

intente con esto




public function relations()

    {

'dom_activo'=>array(self::BELONGS_TO,'Dominios','activo','condition'=>'Dominios.dominio=\'TIPO_LOGICO\'and Dominios.valor=Personas.activo','alias'=>'Dominios'),

}




y no funciona, me hace el join con idDominio

help!

Creo que tenes que poner algo asi:




public function relations(){

   'dom_activo'=>array(self::BELONGS_TO,'Dominios','activo','on'=>'Dominios.dominio=\'TIPO_LOGICO\'and Dominios.valor=Personas.activo'),

}



nop

sigue haciendo el join con idDominio(le agregue el alias ‘alias’=>‘Dominios’)

no da error, pero no muestra nada

Y esto?




public function relations(){

   'dom_activo'=>array(self::BELONGS_TO,'Dominios','activo','on'=>'Dominios.dominio', 'condition=>'Dominios.dominio = \'TIPO_LOGICO\'and Dominios.valor=Personas.activo'),

}




Tu escenario es un poco complicado porque vos queres hacer join con PARTE de otra tabla.

Es decir queres hacer join de la tabla Personas COMPLETA con PARTE de la tabla Dominios, de hecho tendrias un join para sexo y otro para activo, cada uno con una parte diferente de la misma tabla Dominios!!!

Creo que yii (aun) no esta preparado para hacer join con subcosultas!!!

no

estoy mirando este post http://www.yiiframew…__fromsearch__1

hay que usar "on", pero no me funciona!!!

igualmente es un caso distinto, en este post usa la pk y yo no la tengo que usar

Que version estas usando?

1.0.9

mmm… so se entonces como puedo ayudarte… segun master qiang (en el foro que apuntaste) se debe usar la clausula ‘on’ donde le indicas el campo de la otra tabla (en este caso Dominios.activo) con la que hacer el join. Despues en el condition haces el where (con la clausula ‘condition’).

Podes mostarme exacto tu método relations()?

te paso otra relacion

la tabla Rp_novedades tiene un campo tipo_novedad

y en la tabla dominios estan los valores posibles

dominio = RP_TIPO_NOVEDAD




    public function relations()

    {

        return array(

            'matricula' => array(self::BELONGS_TO, 'Rp_matriculas', 'mat_idMatricula','alias'=>'Rp_matriculas'),

            'institucion' => array(self::BELONGS_TO, 'Rp_instituciones', 'ins_idInstitucion'),

                        'dom_tipo_novedad'=>array(self::BELONGS_TO,'Dominios','tipo_novedad','on'=>'Dominios.dominio=\'RP_TIPO_NOVEDAD\'and Dominios.valor=Rp_novedades.tipo_novedad','alias'=>'Dominios'),


        );

    }




y genera el siguiente where




 FROM `Rp_novedades`  LEFT OUTER JOIN `Dominios` Dominios ON (`Rp_novedades`.`tipo_novedad`=Dominios.`idDominio`) AND (Dominios.dominio='RP_TIPO_NOVEDAD'and Dominios.valor=Rp_novedades.tipo_novedad)



genera

(Rp_novedades.tipo_novedad=Dominios.idDominio)

Proba cambiando




'dom_tipo_novedad'=>array(self::BELONGS_TO,'Dominios','tipo_novedad','on'=>'Dominios.dominio=\'RP_TIPO_NOVEDAD\'and Dominios.valor=Rp_novedades.tipo_novedad','alias'=>'Dominios'),



por




'dom_tipo_novedad'=>array(self::BELONGS_TO,'Dominios','tipo_novedad','on'=>'Dominios.dominio', 'condition'=>'Dominios.dominio=\'RP_TIPO_NOVEDAD\'and Dominios.valor=Rp_novedades.tipo_novedad','alias'=>'Dominios'),



no, genero esto




FROM `Rp_novedades`  LEFT OUTER JOIN `Dominios` Dominios ON (`Rp_novedades`.`tipo_novedad`=Dominios.`idDominio`) AND (Dominios.dominio) 



WOW!!!

Y si lo pones en el post ‘General Discusion’.

Pone tu codigo completo de relation() con la relacion modificada y pone el query resultante… y ponele como titulo problems whit on clause, no expliques mucho del asunto asi no desvias la atencion… debe ser un bug!!!

Nos mudamos a

La Solucion

http://www.yiiframework.com/forum/index.php?/topic/4148-ar-relation-foreign-key/page__hl__clause%20on__fromsearch__1




'dom_tipo_novedad'=>array(self::BELONGS_TO,'Dominios','','on'=>'Dominios.dominio=\'RP_TIPO_NOVEDAD\'and Dominios.valor=Rp_novedades.tipo_novedad','alias'=>'Dominios'),



Aja!!! Lo lograste! Te felicito!

Si, cuesta encontrar los post, el buscador es un poco pobre

gracias PoL, aguante Argentina!!!! hoy a los charruas los matamos!! jajaja