与实体的关联(代理错误)

时间:2013-04-18 09:48:02

标签: proxy doctrine-orm associations zend-framework2 entities

我有以下实体:

  • 用户
  • 地址
  • 国家

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

转储:

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 个答案:

答案 0 :(得分:1)

我真的不确定这个,但如果你到了这个国家,代理通常会返回一个国家实体。您是否尝试过实际获取国家/地区并查看您获得的对象类型?

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