Digamos que tengo una aplicación de blog.
El autor puede agregar varias imágenes a una publicación, ya sea dando un enlace a una url de una imagen existente en la web o cargando una nueva imagen.¿Cómo puedo hacer consultas de asociaciones de entidades complejas en la doctrina 2? (entidad virtual)
Quiero poder reproducir desde una imagen (ya sea cargada o url) a todas las publicaciones que usan esa imagen, y desde una publicación específica a todas las imágenes en esa publicación (por ejemplo, para poder eliminar imágenes que son ilegales y/o suspender la publicación que las usa hasta que el autor corrija la publicación).
Sin embargo, utilizo entidades diferentes para una imagen cargada frente a una imagen url: una imagen cargada tiene más datos sobre la imagen que una url.
Esto da como resultado un código más complejo, ya que en cada guardado de una publicación editada necesito verificar qué tipo es la imagen específica (de todas las imágenes en la publicación que necesito repasar) y luego crear o actualizar su registro, y asignar al campo de relación en la entidad post.
Entonces ... suponiendo que tengo una UploadedImage
y un UrlImage
entidades, pensé en tener un método setImages
en la entidad post
, que comprueba por cada imagen se pone, si está cargado o URL, y luego llama a cualquiera o setUploadedImages
setUrlImages
.
Sin embargo, necesitaré algún tipo de repositorio virtual images
, para cargar imágenes de la misma manera.
que suena un poco complejo, y me preguntaba:
- ¿Cómo puedo tener una entidad doctrina virtual (con su repositorio y todo)?
- ¿Hay un mejor diseño para ello?
Ha considerado el uso [Mapeo de Herencia] (http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html)? – Orbling
@Orbling de qué manera? ¿Y cómo resolverá el "problema" de decidir qué hacer con cada tipo? – Doron
Bueno, al usar Mapeo de herencia, puede tener una superclase que represente ambos tipos, y luego se pueden manejar juntos. Pueden tener los mismos métodos y hacer cosas diferentes según el subtipo. – Orbling