1

Symfony2 (2.4-dev) と Doctrine2 に問題があります。

MyObject.orm.yml で次のように定義されたエンティティがあります。

NS\ApiBundle\Entity\MyObject:
    type: entity
    table: my_objects
    indexes:
        moderator_id:
            columns:
                - moderator_id
        author_id:
            columns:
                - author_id
    id:
        id:
            id: true
            type: integer
            generator:
                strategy: IDENTITY
    oneToOne:
        author:
            targetEntity: User
            joinColumn:
                name: author_id
                referencedColumnName: id
    oneToOne:
        moderator:
            targetEntity: User
            joinColumn:
                name: moderator_id
                referencedColumnName: id
    fields:
        created:
            type: datetime
            nullable: true
        updated:
            type: datetime
            nullable: true
        published:
            type: datetime
            nullable: true
        title:
            type: string
            length: 255
            nullable: true
    lifecycleCallbacks: {  }

ご覧のように、User エンティティを指す 2 つの oneToOne フィールドがあります。問題は、Doctrine にこれらの oneToOne を提供するように依頼すると、両方に対して機能しないことです。

MyObject クラスで

$this->getAuthor()->getFullname(); // this work
$this->getModerator()->getFullname(); // this doesn't

エラーは次のとおりです:エラー: 非オブジェクトでのメンバー関数 getFullname() の呼び出し (...)

作成者の oneToOne を削除すると、getModerator() が機能し、その逆も同様です。注: 指摘されたユーザー ID は、作成者とモデレーターで同じになることがあります (これは問題ですか)。

ここで何か間違ったことをしていますか?それはバグですか?

4

1 に答える 1