Doctrine のエンティティ マネージャは、子エンティティが要求されると、複数テーブルの継承の下で親クラスのエンティティを返すように見えます。これにより、子のメソッドとプロパティにアクセスできなくなります。
私は2つのクラス人(親) - >所有者(子供)を持っています
私のコードは次のようになります。
$person = $entityManager->find('Library\Entity\People\Owner', 2);
これは、要求されたOwnerオブジェクトではなく、親 ( person ) オブジェクトを返します。これらのエンティティがどのように定義されているかを以下に示します。
質問: getOwnedProperty()メソッドにアクセスできるように、共有 ID が 2 の要求された所有者オブジェクトをエンティティ マネージャーに返すようにするにはどうすればよいですか?
2 つのエンティティは次のように定義されています。これが質問への回答に役立つかどうかはわかりません。
FIRST ENTITY: person (親クラス)
namespace Library\Entity\People;
use Doctrine\ORM\Mapping as ORM;
use Library\Entity\General\Property;
use Doctrine\Common\Collections\ArrayCollection,
Library\Entity\Contract\Tenantcontract,
Library\Entity\People\Owner;
/**
* @ORM\Entity (repositoryClass="Library\Repository\People\PersonRepository")
* @ORM\Table(name="Person")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr",type="string")
* @ORM\DiscriminatorMap({"person" = "Person", "owner" = "Owner"})
*/
class Person
{
/**
* @ORM\Id
* @ORM\Column(type="integer");
*/
protected $user_id = NULL;
}
2 番目のエンティティ: 所有者( Person の子)
/**
* @ORM\Entity
*/
class Owner extends Person
{
/**
* @ORM\OneToMany(targetEntity="Library\Entity\General\Property", mappedBy="owner_id")
*/
protected $ownedProperties = null;
public function __construct()
{
$this -> ownerProperties = new ArrayCollection();
}
public function addOwnedProperty($propertyId)
{
$this -> ownedProperties[] = $propertyId;
}
public function getOwnedProperty()
{
return $this -> ownedProperties;
}
}