Я пытаюсь вернуть виртуальное свойство с помощью API Platform, но единственное, что я могу получить, это IRI.
У меня несколько пользователей, связанных с несколькими организациями. В этих организациях есть только один владелец (класс пользователя).
Мне нужно свойство с именем "coach", которое возвращает владельца первой организации
Случай немного сложнее, но я упростили его.
App \ Entity \ User
/**
* @ApiResource(
* itemOperations={
* "get"={"security"="is_granted('view', object)"},
* },
* normalizationContext={"groups"={"user", "user:read"}},
* denormalizationContext={"groups"={"user", "user:write"}}
* )
* @ORM\Table(name="user")
*/
class User extends BaseUser
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @Groups({"user"})
*/
protected $email;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"user"})
*/
private $firstName;
/**
* @ApiProperty()
* @Groups({"user"})
*/
private $coach;
/**
* User constructor.
*/
public function __construct()
{
parent::__construct();
$this->organizations = new ArrayCollection();
}
[...]
public function getCoach(): ?User
{
$coach = null;
if (count($this->getOrganizations()) > 0) {
$coach = $this->getOrganizations()->first()->getOwnerUser();
}
return $coach;
}
}
Я все еще получаю
{
email: xxx;
firstName: xxx;
organizations: [
{
name: xxx;
},
{
name: xxx;
}
],
coach: "/api/users/4"
}
, и я хотел бы получить такого пользователя, как
{
email: xxx;
firstName: xxx;
organizations: [
{
name: xxx;
},
{
name: xxx;
}
],
coach: {
email: xxx;
firstName: xxx;
}
}