2013-04-18 21 views
1

协会我后续的实体:与实体(代理错误)

  • 用户
  • 地址
  • 国家

我的用户连接到地址和地址的国家。我有一个魔术__setter和__getter,当我使用$addresses = $user->__get('addresses');时,它会检索我的地址(es)。

转储:

array(1) { 
    [0]=> 
    object(stdClass)#463 (13) { 
    ["__CLASS__"]=> 
    string(19) "User\Entity\Address" 
    ["inputFilter"]=> 
    NULL 
    ["addressid"]=> 
    int(21) 
    ["street"]=> 
    string(9) "Lange heg" 
    ["number"]=> 
    int(19) 
    ["addition"]=> 
    string(1) "a" 
    ["zipcode"]=> 
    string(6) "7039CA" 
    ["user"]=> 
    string(16) "User\Entity\User" 
    ["country"]=> 
    string(50) "DoctrineORMModule\Proxy\__CG__\User\Entity\Country" 
    ["creator_id"]=> 
    int(9) 
    ["creation_date"]=> 
    string(8) "DateTime" 
    ["last_modifier_id"]=> 
    NULL 
    ["last_modified_date"]=> 
    NULL 
    } 
} 

只有我的国家没有得到正确的对象(从国家实体)。我协会:

用户实体:

/** 
* Id from user 
* 
* @ORM\OneToMany(targetEntity="User\Entity\Address", mappedBy="user") 
* @var Address 
* @access protected 
*/ 
protected $addresses; 

地址实体:

/** 
* @ORM\ManyToOne(targetEntity="User\Entity\User", inversedBy="addresses") 
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id", nullable=false, onDelete="cascade") 
* @var User[] 
* @access protected 
*/ 
protected $user; 

/** 
* @ORM\ManyToOne(targetEntity="User\Entity\Country", inversedBy="id") 
* @ORM\JoinColumn(name="country_id", referencedColumnName="id", nullable=false) 
* @var Country[] 
* @access protected 
*/ 
protected $country; 

国家实体:

/** 
* Id from a country 
* 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
* @ORM\OneToMany(targetEntity="User\Entity\Address", mappedBy="country") 
* @var int 
* @access protected 
*/ 
protected $id; 

在我的地址实体它存储USER_ID和COUNTRY_ID在数据库中。我如何从我的用户中获得我的国家?没有返回代理?

回答

1

我真的不确定这一点,但如果你得到国家,代理通常会返回一个国家实体。你是否尝试过实际取得国家,看看你得到了什么样的对象?

$addresses[0]->__get('country'); 
+0

是的,很愚蠢。由于“延迟加载”,我不知道它返回了代理。所以他一直都知道这些国家。如果我(如你所说)得到我的国名或其他东西,它只是返回了国家。这个代理来了,因为我没有从国家实体得到任何东西。笨。 – Haidy