2016-04-25 6 views
0

Kurz gesagt, ich mag wie etwas verwenden:Wie verwendet man Variablen in ORM-Annotationen von Symfony Doctrine?

@ORM\Table(name="schemaname.tablename") 

aber das „schema“ string mit einer Variablen zu ersetzen, das kann irgendwo als Konfigurationsparameter eingestellt wird (wie in parameters.yml Datei)

+1

Ich denke nicht, dass dies möglich ist, und ich denke auch nicht, dass es jemals notwendig sein sollte. Können Sie erklären, warum der Tabellenname nicht statisch sein muss? –

+0

ORM machen die "Relation" zwischen Ihrer Datenbank und Ihrer Klasse. In Ihrer Entität haben Sie Getter und Setter, um die gewünschte Variable zu erhalten. Ich verstehe nicht, was du tun willst ^^. Sie können keine Tabellenname-Variable haben. Andernfalls können Sie versuchen, die temporäre Tabelle, aber ich weiß nicht, wie behandeln dies mit der Lehre – Letsrocks

+0

Ich muss die datenbankübergreifenden Entity-Beziehungen zu erreichen: http://StackOverflow.com/Questions/36696793/Symfony-and-Doctrine-Cross -database-relations/ – ShinDarth

Antwort

1

Ich verstehe Ihren Kontext als wiederverwendbare Bundle-Entität mit Cross-Domain-Beziehung zu einem anderen Bündel. Ich finde nichts über die Anpassung von Dokumentinformationen, aber da Ihr Paket nur einmal pro Projekt enthalten sein kann, empfehle ich Ihnen, Ihren Bundle-Namen als Präfix für die Tabelle zu verwenden. Wie yourapp_tablename

Für die crossdomain-Einschränkung kann Ihr Bundle, wenn es wiederverwendbar ist, keine Abhängigkeiten zu externen Bundles haben. Es sind Ihre Business-Bündel, die das wiederverwendbare Bündel verwenden müssen, nicht umgekehrt. Ich denke, dass Sie Schnittstellen verwenden müssen, wenn Sie möchten, dass ein externes Bündel Ihre Modellklasse erweitert