Author Archives: Javier Seixas

Restricciones en las asociaciones ORM de Doctrine2

Es importante conocer las restricciones que Doctrine2 presenta cuando tenemos que elaborar asociaciones entre Entidades. Copiado de la Documentación de Doctrine2:

Because we only work with collections for the references we must be careful to implement a bidirectional reference in the domain model. The concept of owning or inverse side of a relation is central to this notion and should always be kept in mind. The following assumptions are made about relations and have to be followed to be able to work with Doctrine 2. These assumptions are not unique to Doctrine 2 but are best practices in handling database relations and Object-Relational Mapping.

  • Changes to Collections are saved or updated, when the entity on the owning side of the collection is saved or updated.
  • Saving an Entity at the inverse side of a relation never triggers a persist operation to changes to the collection.
  • In a one-to-one relation the entity holding the foreign key of the related entity on its own database table is always the owning side of the relation.
  • In a many-to-many relation, both sides can be the owning side of the relation. However in a bi-directional many-to-many relation only one is allowed to be.
  • In a many-to-one relation the Many-side is the owning side by default, because it holds the foreign key.
  • The OneToMany side of a relation is inverse by default, since the foreign key is saved on the Many side. A OneToMany relation can only be the owning side, if its implemented using a ManyToMany relation with join table and restricting the one side to allow only UNIQUE values per database constraint.

Consistency of bi-directional references on the inverse side of a relation have to be managed in userland application code. Doctrine cannot magically update your collections to be consistent.

Entendiendo la asociaciones Many-To-One y One-To-Many

El texto está claro pero me queda la siguiente duda, a partir de lo documentado sobre una relación Many-To-One Unidirectional: El lado Many es el owning side por qué guarda la clave foránea. En el ejemplo facilitado, una dirección puede pertenecer a diferentes usuarios, y la Entidad Usuario podrá acceder a la Entidad Dirección. Pero desde la Entidad Dirección no se podrá acceder a los usuarios que la tienen asignada. Por ese motivo se llama Unidireccional. A la hora de persistir un objeto Dirección, no se pueden persistir objetos Usuario, ya que no dispone de asociación en ese sentido, es decir, un objeto Dirección no guarda en su instancia ningún Usuario.

En el caso de la relación One-To-Many Bidirectional, se están generando dos relaciones. Una One-To-Many desde Producto a Característica, y otra Many-To-One desde Característica a Producto. El owning side aquí será el lado Característica, por qué guarda la clave foránea en la tabla de la BDD. En la persistencia se entiende que cuando se crea una Característica se asigna a qué Producto pertenece. Si yo creo un nuevo Producto y una nueva Característica, y le asigno el Producto a la Característica y persisto la Característica, en la BDD se guardan ambos. Y entiendo que si en cambio asigno la nueva Característica al Producto y persisto el Producto, sólo se guardaría éste, pero sí se guarda la Característica (¿?).

Incluir tiempo estimado e imputado en las líneas de tareas en Feng Office

Feng Office és una buena herramienta de gestión de proyects, open source y gratuita. Las herramientas gestoras de proyectos siempre tienen el inconveniente que no todas las funcionalidades se adaptan a la manera de trabajar de uno, sin embargo, gracias a ser open source, se puede modificar para conseguirlo.

Una de las necesidades que tenía, era la de visualizar rápidamente y en cada tarea el tiempo estimado en esa tarea y el tiempo acumulado en el desarrollo de la misma, para poder valorar en mientras trabajo si estoy cumpliendo los plazos.

Línea de tarea en Feng Office

A continuación voy a detallar los cambios que he realizado para visualizarlo. He trabajado sobre la versión de Feng Office 1.7.5.

Continue reading

Netvibes logo

Netvibes en modo reader

Llevo utilizando Netvibes como lector de RSS desde 2006.  Con el tiempo fui añadiendo cada blog que me interesaba, y los iba clasificando por pestañas, hasta alcanzar a tener más de 20 de ellas, con más 450 canales diferentes en total.  Y Netvibes, lo que había sido un modo práctico de información y de mantenerse al tanto de las novedades, se había descontrolado y se había convertido en un cajón de sastre donde seguía las 4 pestañas más interesantes y deja de contar. Hasta que hayé el modo reader.

Continue reading

TwitterFox: Twitter en el Firefox

Una de las cosas que me impiden estar al tanto de Twitter es que nunca me acuerdo de entrar en la web. Pero poco a poco me voy metiendo en el mundillo y voy descubriendo diferentes herramientas para interactuar con él. La última es TwitterFox, un plugin de Firefox que te permite acceder a tu Twitter desde un icono en el navegador. Útil y rápido. Permite ver tu Twitter, las respuestas a tus posts y los mensajes director. Lo recomiendo.

Twitter Bird

Twitter en el turismo 2.0

Hoy he asistido a la segunda edición del cava&twitts donde se trataba el tema del turismo 2.0. No es un tema que hoy por hoy me apasione ni me afecte directamente, y menos desde el punto de vista en que se ha tratado, que ha sido la visión más bien comercial, de branding y de marketing. Pero ha sido muy interesante escuchar opiniones de gente del mundillo, tanto de agencias, como de intermediarios o de hoteles. Sin embargo, durante una parte muy extensa del debate se ha puesto sobre la mesa el papel que juegan en este asunto las redes sociales, concretamente twitter.

Continue reading

Reestructuración de mi Blog: blogPro

Tras descubrir WordPress MU he decidido reestructurar mi blog y dividirlo en dos blogs independientes. Uno con mi vertiente profesional, para tratar temas sobre programación, desarrollo, wordpress, que pueden tener un interés más general, y en castellano, para que pueda llegar a un número mayor de público. Y por el otro lado tendré un blog personal, donde pueda opinar y reflexionar sobre temas más generales como la política, internet, o cualquier otra cosa.

Continue reading