2016-09-06 3 views
0

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.

Antwort

1

oneToMany Bedürfnisse Assoziationskartierung auf many Seite, deshalb würden Sie auch mit Mapping manyToOne zeigt Ihre benutzerdefinierten Conversation benutzerdefinierte Message Unternehmen benötigen.

Das ist, weil tatsächlich in RMDBS der Fremdschlüssel in many Seitentabelle ist, die in diesem Fall message Tabelle ist. Es gibt eine Spalte conversation_id in der Nachricht und nicht umgekehrt.

+0

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

+0

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. –

+0

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

Verwandte Themen