将Symfony User转换为数组

时间:2014-12-29 12:06:05

标签: php json symfony serialization doctrine

我有一个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的正确方法是什么?

1 个答案:

答案 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;
祝你好运。