Ich verwende FOSMessage in meinem Projekt (https://github.com/FriendsOfSymfony/FOSMessage) und ich möchte die Tabellennamen der Entitäten überschreiben.Symfony 3 | Override Entity Tabellenname
Zum Beispiel in FOSMessage (\ FOS \ Message \ Driver \ Lehre \ ORM \ Entity \ Conversation) Ich habe:
/**
* @ORM\Table(name="fos_message_conversations")
* @ORM\Entity
*/
class Conversation extends BaseConversation
...
// properties
...
Und in meiner benutzerdefinierten Entität, das tue ich:
/**
* @ORM\Table(name="user__message__fos_message_conversations")
* @ORM\Entity
*/
class Conversation extends \FOS\Message\Driver\Doctrine\ORM\Entity\Conversation
{
}
Es funktioniert aber nur für "keine Relation" -Eigenschaften. Es gibt Eigenschaften mit "One-to-Many" -Beziehungen, und diese werden ignoriert. Wenn ich meine Datenbank aktualisiere, habe ich nur Texteigenschaften und ID. Ich habe zum Beispiel keine "Nachrichten" -Relation.
Wie kann ich tun? Ich möchte nur den Tabellennamen ändern.
Hallo dragoste, Danke für deine Antwort, das ist sehr klar. Es gibt also keine Möglichkeit, einfach die benutzerdefinierte Klasse zu erstellen, von der in Bundle zu erweitern und den Tabellenname zu ändern. Muss ich alle Beziehungseigenschaften neu erstellen und die Beziehung "OneToMany" mit neuen benutzerdefinierten Entitäten neu schreiben? – Aximem
Ja. Wie würdest du dir das sonst vorstellen? Wohin würde 'Message :: conversation_id' zeigen? Ihre benutzerdefinierte 'Conversation' oder FOS' \ FOS \ Message \ Driver \ Doctrine \ ORM \ Entity \ Conversation'? Nun, es ist der Klasse von FOS zugeordnet und hier kommt dein Problem her. –
Ja, ich verstehe, ich bin nur überrascht, dass wir den Namen einer Bundle-Entity-Tabelle nicht ändern können, ohne sie zu erweitern. Und wenn wir es erweitern, müssen wir Eigenschaften umschreiben, aber Ok, ich verstehe es. Danke dragoste – Aximem