2012-07-03 121 views
1

我定義映射超我的所有實體與地理定位功能:學說2多個映射繼承

<?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 entends用戶模式:

<?php 
namespace Acme\UserBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 

/** 
* @ORM\Entity 
*/ 
class User extends BaseUser {} 
?> 

所以我的問題是:如何給來自可放置的映射信息到我的用戶實體?

回答

1

您應該有一個位置/地址對象,繼承自Placeable,並將位置鏈接到用戶。

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; 
} 
+0

感謝來自多個實體繼承!這說得通 ;) –