orm - getrepository - symfony 4 database config
Usar Doctrine y Symfony para crear asociaciones polimórficas similares (2)
Eche un vistazo a las incrustaciones o podría usar rasgos.
Estoy intentando tener un rasgo Fileable que proporcionará a una Entidad los métodos para los archivos CRUD basados en la Entidad de Archivo mencionada a continuación.
Después de leer la documentación de Doctrine y buscar en Internet, lo mejor que pude encontrar es Mapeo de herencia, pero todos requieren la subclase para extender la superclase, lo que no es ideal ya que las Entidades actuales ya extienden otras clases. Podría tener FileFoo
entidad FileFoo
y una entidad FileBar
, pero esto se vuelve demasiado complicado y requiere una unión extra ( super
-> sub
-> entity
).
Alternativamente, podría tener una Entidad de Archivo que tenga muchas columnas para Entidades (así que foo_id
para el objeto Foo
, bar_id
para el objeto bar
etc.) pero esto se vuelve complicado y requeriría una nueva columna para cada entidad que quisiera. agregue el rasgo Fileable también.
Entonces, a las preguntas: ¿Estoy pensando en cómo quiero guardar los datos incorrectamente? ¿Hay algunas características / funciones en Doctrine / Symfony que me he perdido? ¿Crees que aparecería así si fuera a copiar Doctrine para agregar esta característica, también dónde debería buscar?
<?php
/**
* File
*
* @ORM/Table()
* @ORM/Entity()
* @ORM/HasLifecycleCallbacks()
*/
class File
{
/**
* @var integer
*
* @ORM/Column(type="integer")
* @ORM/Id()
* @ORM/GeneratedValue()
*/
protected $id;
/**
* @var string
*
* @ORM/Column(type="string")
*/
protected $entityName;
/**
* @var string
*
* @ORM/Column(type="string")
*/
protected $entityId;
...
Logré algo similar utilizando la herencia definida en los rasgos, que junto con las interfaces, básicamente me dieron lo que daría una extensión múltiple.