Pregunta

En primer lugar, me gustaría simplemente por ahí que soy un novato ORM. Nunca he usado un ORM en mi vida y he llegado a un punto en mi día a día en desarrollo que tengo que hacer algunas relaciones avanzadas locas que creo DataMapper exceso de celo Edición me puede ayudar con lo que estoy usando CodeIgniter.

En mi base de datos tengo las siguientes tablas;

Los usuarios proyectos
clientes
tareas

Aquí es mis relaciones deseadas entre las mesas;

  • Un usuario puede pertenecer a muchos proyectos.
  • Un proyecto puede tener múltiples tareas, pero sólo puede tener un cliente.
  • Un cliente puede tener muchos usuarios y puede tener muchos proyectos
  • Una tarea sólo puede tener un proyecto

Me han tratado de puesta a punto mis modelos en el directorio de modelos como se dice en la documentación el nombre del modelo sin los s en el extremo, por lo que para los usuarios que tienen un modelo user.php y así sucesivamente.

Sé que la documentación es grande, pero me parece que no puede entender correctamente a pesar de que obviamente es muy fácil. Sé que ejemplariza el modelo yendo por ejemplo, u = $ usuario nuevo (); dentro de su controlador, pero mi pregunta es la creación de las relaciones dentro de los modelos.

¿Cómo puedo configurar mis modelos a tener las relaciones anteriores así que por ejemplo, cuando voy a buscar una tarea que pueda ver lo proyecto al que pertenece y todo un montón de información de sus tablas de bases de datos asociadas.

Me di cuenta de que en la documentación se utiliza la siguiente dentro del modelo de proyectos que debe decirle que puede tener más de una tarea para un proyecto; var $has_many = array('task')

Es eso todo lo que hay a ella? ¿Es tan simple como definir el has_many $ y $ has_one las variables y poner en el nombre del modelo asociado en la matriz?

¿Fue útil?

Solución

Nunca he usado este ORM particular, pero yo utilizo Doctrina. Si la persona que está utilizando funciona de la misma manera, la respuesta simple a su pregunta es - sí! Con Doctrina de configurar todas las relaciones en las clases del modelo. El ORM entonces manejar todo para usted. Así, por ejemplo, si se instancia un nuevo objeto de tarea ...       $ Task = nueva tarea (); A continuación, puede acceder a la relación con la tabla Proyecto simplemente escribiendo       $ Task-> Proyecto;

Debo subrayar que el código anterior no está escrito para DataMapper por lo que no podría funcionar como es, pero espero que aclara las cosas para usted. Suena como lo hace entender la documentación, pero simplemente no lo cree !!!!

Otros consejos

Eso es todo lo que tiene que hacer el tiempo que su estructura de base de datos se ajusta a la distribución especificada por DataMapper exceso de celo.

He estado usando este ORM en un proyecto que he estado construyendo y en su mayor parte, ha sido extremadamente útil y ahorro de tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top