Globedia.com

×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×
×
Recibir alertas

¿Quieres recibir una notificación por email cada vez que Malguzt escriba una noticia?

Orden en las relaciones de modelos en cakephp

01/04/2009 23:49 0 Comentarios Lectura: ( palabras)

Antes que nada valdría aclarar que esto resuelve un problema en los modelos de cakePHP 1.1, no se si el problema seguirá en la 1.2 o no.

Luego de perder toda una mañana dándole vueltas a mi aplicación preguntándome ‘ ¿porque me da error de conexión al servidor si estoy como localhost?’ (aun no entiendo porque daba ese error), llegue a darme cuenta que el problema estaba en el modelo, pero aun así ¿cual era el error?

Entonces me puse a borrar parte por parte hasta que anduviera, y encontré que si borraba una declaración en particular, andaba, la volvía a poner y de nuevo no andaba. Me fije gramaticalmente y no había error, revise la documentación de cakePHP pero no encontré nada, mi problema en el modelo persistía, busque en google y tampoco. ¿entonces?

Ya se que te estoy mareando al pedo, así que voy al grano, la cuestión es que por diferentes experimentos (a lo largo de un par de horas) y por mera casualidad y curiosidad, se me ocurrió cambiar el orden en que estaban declaradas mis relaciones ‘ belongsTo’ y mágicamente volvió a andar.

Resulta ser que al señor ‘ torta’ no le gusta que empieces por declara las relaciones que serán traídas con diferente nombre que el modelo del que se traerán, él quiere que primero declares todas en la que modelo y nombre de relación coincidan y luego en las que no. ¿lo que digo es un lío? ¿sera mejor un ejemplo? Claro que si, ahora viene el ejemplo y lo entendes como la tabla del 2.

Supongamos que tenemos un modelo ‘ casa’ este debe pertenecer a un ‘ barrio’ que tiene muchas casas y a la vez pertenece a una ‘ persona’ que también puede tener varias casas. (prohibido buscarle fallas al modelo, es solo un ejemplo rápido). Entonces definimos una relación llamada ‘ barrio’ con el modelo ‘ barrio’ , y una relación llamada ‘ propietario’ con el modelo ‘ persona’ . La cuestión es que si primero definimos barrio y luego propietario, todo lindo y feliz, pero si lo hacemos al revez, cakePHP pasara a formar parte de nuestras pesadillas hasta que pongamos en el orden que corresponda.

Forma incorrecta

  1. class Casa extends AppModel {
  2. var $name = 'Casa';
  3. var $belongsTo = array(
  4. 'Propietario' => array(
  5. 'className' => 'Persona',
  6. 'foreignKey' => 'persona_id'
  7. ),
  8. 'Barrio' => array(
  9. 'className' => 'Barrio',
  10. 'foreignKey' => 'barrio_id'
  11. )
  12. );
  13. }
  14. ?>
Forma correcta

  1. class Casa extends AppModel {
  2. var $name = 'Casa';
  3. var $belongsTo = array(
  4. 'Barrio' => array(
  5. 'className' => 'Barrio',
  6. 'foreignKey' => 'barrio_id'
  7. ),
  8. 'Propietario' => array(
  9. 'className' => 'Persona',
  10. 'foreignKey' => 'persona_id'
  11. )
  12. );
  13. }
  14. ?>

Sobre esta noticia

Autor:
Malguzt (15 noticias)
Fuente:
blog.malguzt.com.ar
Visitas:
6790
Tipo:
Reportaje
Licencia:
Distribución gratuita
¿Problemas con esta noticia?
×
Denunciar esta noticia por

Denunciar

Comentarios

Aún no hay comentarios en esta noticia.