Я пытаюсь использовать JMSSerializer с Symfony для создания простого json API.
Итак, у меня есть 2 простых объекта (1 пользователь может иметь много автомобилей, каждый автомобиль принадлежит одному пользователю):
class Car
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="cars")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
}
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Car", mappedBy="user", orphanRemoval=true)
*/
private $cars;
}
Теперь я хочу получить все Cars
с их User
.
Мой контроллер:
class CarController extends AbstractController
{
/**
* @param CarRepository $carRepository
*
* @Route("/", name="car_index", methods="GET")
*
* @return Response
*/
public function index(CarRepository $carRepository)
{
$cars = $carRepository->findAll();
$serializedEntity = $this->container->get('serializer')->serialize($cars, 'json');
return new Response($serializedEntity);
}
}
Это выдаст ошибку 500:
При сериализации объекта
класс \ "App \ Entity \ Car \" (настроенный лимит: 1)
Хорошо, звучит ясно. JMS пытается заполучить каждую машину вместе с пользователем и перейти к машинам и пользователю ....
Итак, мой вопрос: как предотвратить это поведение? Я просто хочу, чтобы все машины были у их пользователя, и после этого итерация должна быть остановлена.