Symfony 4. У меня есть две сущности, Cat
и Owner
.
class Cat
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups("cats")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups("cats")
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Owner", mappedBy="cat")
* @Groups("cats")
*/
private $owners;
}
class Owner
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups("cats")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups("owners")
*/
private $name;
}
Моя конечная точка API должна вернуть 2 ключа: owners
(список всех владельцев) и cats
(список всех кошек с их владельцами).
public function index()
{
$repository = $this->getDoctrine()->getRepository(Owner::class);
$owners = $repository->findAll();
$repository = $this->getDoctrine()->getRepository(Cat::class);
$cats = $repository->findAll();
return $this->json([
'owners' => $owners,
'cats' => $cats,
], 200, [], ['groups' => ['owners', 'cats']]);
}
Это работает, но с 1 проблемой: список cats
содержит полную информацию о владельце для каждого владельца, т. Е .:
{
"owners": [
{
"id": 1,
"name": "John Smith"
}
],
"cats": [
{
"id": 1,
"name": "Miaow",
"owners": [
{
"id": 1,
"name": "John Smith"
}
]
}
]
}
Я хочу, чтобы ключ owners
в объекте cat
возвращал только id
владельца, например:
{
"owners": [
{
"id": 1,
"name": "John Smith"
}
],
"cats": [
{
"id": 1,
"name": "Miaow",
"owners": [
1
]
}
]
}