我有一个User实体,其中包含多个参考的国家/地区字段:
/**
* @ORM\ManyToOne(targetEntity="Country")
*/
private $country;
/**
* Set country
*
* @param string $country
* @return User
*/
public function setCountry($country)
{
$this->country = $country;
return $this;
}
/**
* Get country
*
* @return string
*/
public function getCountry()
{
return $this->country;
}
我需要将当前用户表示为数组,因此在控制器中我将当前用户作为$user = $this->getUser();
并使用JMSSerializer和json_decode将对象转换为数组:
$userJSON = $serializer->serialize($user, 'json');
$user = json_decode($userJSON, true);
现在我将用户对象作为一个数组,但不是将国家作为ID,而是获得整个国家/地区对象。在用户对象中将国家/地区作为ID的正确方法是什么?
答案 0 :(得分:0)
您必须为此目的使用getter注释:
/** @Accessor(getter="getCountryName") */
private $country;
public function getCountryName()
{
return $this->country->getName(); // or which property for country entity is used to take its name
}
不要忘记使用JMS Annotations:
use JMS\Serializer\Annotation\Accessor;
祝你好运。