2017-08-02 2 views
0

manyToOneでオブジェクトをロードしようとしましたが、nullになりました。manyToOne経由で読み込まれたDoctrineエンティティは初期化されていません

#ConversationMessage.orm.yml: 
AppBundle\Entity\ConversationMessage: 
    type: entity 
    manyToOne: 
     user: 
      targetEntity: User 
      joinColumn: 
       name: user 
       referencedColumnName: id 
     conversation: 
      targetEntity: Conversation 
      joinColumn: 
       name: conversation 
       referencedColumnName: id 
    table: null 
    repositoryClass: AppBundle\Repository\ConversationMessageRepository 
    id: 
     id: 
      type: integer 
      id: true 
      generator: 
       strategy: AUTO 
    fields: 
     message: 
      type: text 
     time: 
      type: integer 
    lifecycleCallbacks: { } 

会話は常にデータベースエントリに設定されます。しかし、ユーザーオブジェクトではありません。 両方のクラスが同じですか?

ユーザオブジェクトは、自分自身の場合のみConversionMessageに表示されます。すべてのオブジェクト、userIDは私のログインuserIDではない、エントリは初期化されていません。

フェッチ方法をEAGERに設定しようとしましたが、同じ結果が得られました。

誰かがお手伝いできますか?

ありがとうございました!

答えて

0

多くの試行の後に... 私が使用:

{{ dump(conversations) }} 

ユーザーオブジェクトが「ヌル」としてすべてのフィールドを示します。 IDだけが正しい値に設定されます。ユーザーオブジェクトがユーザーオブジェクトの場合、すべてのフィールドが自分のデータで設定されます。

しかし、私は

{{ conversations.getUser().getUsername() }} 

にアクセスすることができますし、ユーザー名が表示されます。 An

{{ dump(conversations) }} 

ユーザー名を読み取った後、すべてのフィールドに値が表示されます。

私は再度チェックし、削除されました:

{{ conversations.getUser().getUsername() }} 

{{ dump(conversations) }} 

で、ユーザが再び "ヌル" です。

すべての作品が、誰かが私に説明できるのですが、なぜsymfonyがこのように機能するのですか?

ありがとうございます!

関連する問題