Допустим, у меня есть две сущности: Книга и Автор, которые настроены так:
Author.php
/**
* @ApiResource(attributes={
* "normalization_context"={"groups"={"author"}, "enable_max_depth"=true},
* "denormalization_context"={"groups"={"author"}, "enable_max_depth"=true}
* })
* @ORM\Entity(repositoryClass="App\Repository\AuthorRepository")
*/
class Author
{
...
/**
* @ORM\OneToMany(targetEntity="App\Entity\Book", mappedBy="author", orphanRemoval=true)
* @Groups({"author", "book"})
* @MaxDepth(3)
*/
private $books;
Book.php
/**
* @ApiResource(attributes={
* "normalization_context"={"groups"={"book"}, "enable_max_depth"=true},
* "denormalization_context"={"groups"={"book"}, "enable_max_depth"=true}
* })
* @ORM\Entity(repositoryClass="App\Repository\BookRepository")
*/
class Book
{
...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Author", inversedBy="books")
* @ORM\JoinColumn(nullable=false)
* @Groups({"book", "author"})
* @MaxDepth(3)
*/
private $author;
Я хочу получить книгу со своим автором и все книги, которые этот автор написал.Таким образом, позже я могу перебрать эту коллекцию книг.
Проблема в том, что я запрашиваю URL:
GET localhost:8001/api/books/1
Ответ следующий:
{
"@context": "/api/contexts/Book",
"@id": "/api/books/1",
"@type": "Book",
"author": {
"@id": "/api/authors/1",
"@type": "Author",
"books": [
"/api/books/1",
{
"@id": "/api/books/2",
"@type": "Book",
"author": "/api/authors/1"
}
]
}
}
Я хотел бы получить книгу 1 как объект, а не как IRI, что я испортил?
изменить: уточнить, ответ я ожидаю:
{
"@context": "/api/contexts/Book",
"@id": "/api/books/1",
"@type": "Book",
"author": {
"@id": "/api/authors/1",
"@type": "Author",
"books": [
{
"@id": "/api/books/1",
"@type": "Book",
"author": "/api/authors/1"
},
{
"@id": "/api/books/2",
"@type": "Book",
"author": "/api/authors/1"
}
]
}
}
edit: ссылка на тестовое репо