Yii Framework Forum: [RESUELTO] Relations - Yii Framework Forum

Jump to content

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

[RESUELTO] Relations ON CLAUSE Rate Topic: -----

#1 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 05:41 AM

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!
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#2 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 07:14 AM

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'),
}

Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#3 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 07:29 AM

View PostPoL, on 14 October 2009 - 07:14 AM, said:

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

This post has been edited by Horacio Segura: 14 October 2009 - 07:54 AM

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#4 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 07:53 AM

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'),
}


Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#5 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 07:56 AM

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!!!
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#6 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 08:01 AM

View PostPoL, on 14 October 2009 - 07:53 AM, said:

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'),
}




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

This post has been edited by Horacio Segura: 14 October 2009 - 08:05 AM

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#7 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 08:07 AM

Que version estas usando?
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#8 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 08:12 AM

View PostPoL, on 14 October 2009 - 08:07 AM, said:

Que version estas usando?


1.0.9
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#9 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 08:18 AM

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()?
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#10 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 08:24 AM

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`)

This post has been edited by Horacio Segura: 14 October 2009 - 08:27 AM

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#11 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 08:29 AM

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'),

Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#12 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 08:33 AM

View PostPoL, on 14 October 2009 - 08:29 AM, said:

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) 

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#13 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 08:36 AM

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!!!
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#14 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 08:52 AM

View PostPoL, on 14 October 2009 - 08:36 AM, said:

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
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#15 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 09:22 AM

La Solucion
http://www.yiiframew...__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'),

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#16 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 14 October 2009 - 09:54 AM

Aja!!! Lo lograste! Te felicito!
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#17 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 14 October 2009 - 10:02 AM

View PostPoL, on 14 October 2009 - 09:54 AM, said:

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
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
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