Inheritance 学说2多重映射继承
我为所有具有地理定位功能的实体定义了一个映射超类:Inheritance 学说2多重映射继承,inheritance,orm,symfony,doctrine,doctrine-orm,Inheritance,Orm,Symfony,Doctrine,Doctrine Orm,我为所有具有地理定位功能的实体定义了一个映射超类: <?php namespace Acme\GeoBundle\Entity; use Gedmo\Mapping\Annotation as Gedmo; use Doctrine\ORM\Mapping as ORM; /** * @ORM\MappedSuperclass */ class Placeable { /** * @ORM\Column(type="decimal", scale=7) */ protected
<?php
namespace Acme\GeoBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperclass
*/
class Placeable {
/**
* @ORM\Column(type="decimal", scale=7)
*/
protected $loc_latitude;
[...]
}
?>
我目前将两个实体映射到此超类。
但是,我还想将这个地理映射提供给我的用户实体,由FOSUserBundle提供。问题在于,此实体已从FOSUserBundle中输入用户模型:
<?php
namespace Acme\UserBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
/**
* @ORM\Entity
*/
class User extends BaseUser {}
?>
所以我的问题是:如何给出从Placeable到我的用户实体的映射信息?您应该有一个Location/Address对象,从Placeable继承,并将Location与User链接 PS:这是因为在PHP中不能从多个实体继承
<?php
class User extends BaseUser
{
/**
* @ORM\OneToOne(targetEntity="Location", inversedBy="user")
* @ORM\JoinColumn(name="location_id", referencedColumnName="id")
*/
private $location;
}
class Location extends Placeable
{
/**
* @ORM\OneToOne(targetEntity="User", mappedBy="location")
*/
private $user;
}