私のプロジェクト(https://github.com/FriendsOfSymfony/FOSMessage)でFOSMessageを使用しており、エンティティのテーブル名をオーバーライドしたいと思います。Symfony 3 |エンティティテーブル名をオーバーライド
は、例えばFOSMessage(\ FOS \メッセージ\ドライバ\教義\ ORM \エンティティ\会話)に私が持っている:
/**
* @ORM\Table(name="fos_message_conversations")
* @ORM\Entity
*/
class Conversation extends BaseConversation
...
// properties
...
そして、私のカスタムエンティティでは、私は:
/**
* @ORM\Table(name="user__message__fos_message_conversations")
* @ORM\Entity
*/
class Conversation extends \FOS\Message\Driver\Doctrine\ORM\Entity\Conversation
{
}
それは「無関係」のプロパティに対してのみ機能します。 「1対多数」の関係を持つプロパティがあり、無視されます。 私のデータベースを更新するとき、私はテキストのプロパティとIDのみを持っています。私は例えば "メッセージ"の関係を持っていません。
どうすればいいですか?テーブル名を変更したいだけです。 many
側の
こんにちはdragoste、あなたの答えをありがとう、これは非常に明確です。したがって、カスタムクラスを作成し、バンドル内のものから継承してtable_nameを変更する方法はありませんか?すべての関係プロパティを再作成し、新しいカスタムエンティティとの関係「OneToMany」を書き直さなければならないのですか? – Aximem
はい。どのようにそれを想像しますか? 'Message :: conversation_id'はどこに向いていますか?カスタムの「会話」やFOSの「\ FOS \メッセージ\ドライバ\教義\ ORM \エンティティ\会話」?さて、それはFOSのクラスにマッピングされており、それがあなたの問題の原因です。 –
はい、バンドルエンティティテーブル名を拡張せずに変更することはできません。そして私たちがそれを拡張するとき、私たちはプロパティを書き直さなければなりませんが、私はそれを取得します。ありがとう – Aximem