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 は、作成者とモデレーターで同じになることがあります (これは問題ですか)。
ここで何か間違ったことをしていますか?それはバグですか?