Запрос возвращает IRI вместо объекта во вложенных отношениях - PullRequest
0 голосов
/ 21 ноября 2018

Допустим, у меня есть две сущности: Книга и Автор, которые настроены так:

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: ссылка на тестовое репо

...