Yii Framework Forum: Problema Con Through - Yii Framework Forum

Jump to content

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

Problema Con Through Rate Topic: -----

#1 User is offline   Jose H. Milán 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-July 11
  • Location:España

Posted 04 February 2013 - 10:39 AM

Hola a todos,

Estoy intentando hacer una relación HAS_MANY y tengo un error. Me explico rápidamente:

Tengo un model 'User' que se relaciona con 'Job' y con 'JobMessage' a través de 'Job'.

//en relations() de User
...
'jobs' => array(self::HAS_MANY, 'Job', 'author_id'),
'jobmessages' => array(self::HAS_MANY, 'JobMessage', array('id'=>'job_id'),'through' => 'jobs'),
...

la pk y fk son

tbl_Job.author_id -> tbl_User.id
tbl_Job.id -> tbl_JobMessage.job_id


Pues bien el error que recibo es:

PHP Error

preg_split() expects parameter 2 to be string, array given


630                 foreach($params as $name=>$value)
631                     $query->params[$name]=$value;
632             }
633             else
634                 throw new CDbException(Yii::t('yii','The relation "{relation}" in active record class "{class}" is specified with an incomplete foreign key. The foreign key must consist of columns referencing both joining tables.',
635                     array('{class}'=>get_class($parent->model), '{relation}'=>$this->relation->name)));
636         }
637         else
638         {
639             $element=$this;
640             while($element->slave!==null)
641             {
642                 $fks=preg_split('/\s*,\s*/',$element->relation->foreignKey,-1,PREG_SPLIT_NO_EMPTY);
643                 if($element->slave->slave===null)
644                 {
645                     $fke=$element->slave;
646                     $pke=$element;
647                 }
648                 else // nested through detected
649                 {
650                     $fke=$element;
651                     $pke=$element->slave;
652                 }
653                 $query->joins[]=$element->slave->joinOneMany($fke,$fks,$pke,$parent);
654                 $element=$element->slave;



¿Alguna idea?

Gracias

This post has been edited by Jose H. Milán: 04 February 2013 - 10:46 AM

0

#2 User is offline   Juan Carrera 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 05-October 12
  • Location:Zaragoza (Spain)

Posted 04 February 2013 - 01:17 PM

View PostJose H. Milán, on 04 February 2013 - 10:39 AM, said:

Hola a todos,

Estoy intentando hacer una relación HAS_MANY y tengo un error. Me explico rápidamente:

Tengo un model 'User' que se relaciona con 'Job' y con 'JobMessage' a través de 'Job'.

//en relations() de User
...
'jobs' => array(self::HAS_MANY, 'Job', 'author_id'),
'jobmessages' => array(self::HAS_MANY, 'JobMessage', array('id'=>'job_id'),'through' => 'jobs'),
...

la pk y fk son

tbl_Job.author_id -> tbl_User.id
tbl_Job.id -> tbl_JobMessage.job_id



Creo que tienes al revés los campos de la relación through. El orden es campo de jobmessage=>campo de job.

//en relations() de User
...
'jobs' => array(self::HAS_MANY, 'Job', 'author_id'),
'jobmessages' => array(self::HAS_MANY, 'JobMessage', array('job_id'=>'id'),'through' => 'jobs'),
...


Aunque el error que indicas no me cuadra con lo que creo que pasa, igual te sirve.
0

#3 User is offline   Jose H. Milán 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-July 11
  • Location:España

Posted 04 February 2013 - 01:28 PM

Hola Juan,

Gracias por tu respuesta tan rápida. Tienes razón, le he dado tantas vueltas que al final lo he dejado mal. Lo he cambiado pero sigue igual.

Voy a probar algo y os informaré de si he tenido suerte... Estoy trabajando en una aplicación donde no tengo posibilidad de alterar la BD y tuve un problema con una MANY_MANY (la solucion fue establecer correctamente la pk en el Model ...)

Voy a probar.

Un saludo
0

#4 User is offline   Jose H. Milán 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-July 11
  • Location:España

Posted 04 February 2013 - 01:34 PM

View PostJose H. Milán, on 04 February 2013 - 01:28 PM, said:

Hola Juan,

Gracias por tu respuesta tan rápida. Tienes razón, le he dado tantas vueltas que al final lo he dejado mal. Lo he cambiado pero sigue igual.

Voy a probar algo y os informaré de si he tenido suerte... Estoy trabajando en una aplicación donde no tengo posibilidad de alterar la BD y tuve un problema con una MANY_MANY (la solucion fue establecer correctamente la pk en el Model ...)

Voy a probar.

Un saludo


Mala suerte, no era eso. ¿Alguna alternartiva?
0

#5 User is offline   Juan Carrera 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 05-October 12
  • Location:Zaragoza (Spain)

Posted 04 February 2013 - 03:33 PM

¿Qué version del framework utilizas? y puestos a preguntar ¿en que clase da el error?
0

#6 User is offline   Jose H. Milán 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 21-July 11
  • Location:España

Posted 04 February 2013 - 04:19 PM

View PostJuan Carrera, on 04 February 2013 - 03:33 PM, said:

¿Qué version del framework utilizas? y puestos a preguntar ¿en que clase da el error?


Solved! (Mil gracias Juan)

Tenía la versión 1.1.8 (es un proyecto que ya estaba en marcha y no miré la versión... mal hecho).

Aunque en la documentación dice que 'through' está disponible desde 1.1.7 el código del ejemplo no funciona... imagino que una versión posterior refactorizaron algo relativo a 'through'.

Todo funcion 'like a charm' utilizando la 1.1.13.

Creo que habría que poner una pequeña nota en los docs diciendo que el ejemplo (confirmado) funciona en 1.1.13 pero no en 1.1.8 (desconozco a partir de que versión funciona).

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