Сериализация самоссылаемого объекта - PullRequest
0 голосов
/ 04 июля 2019

Интересно, можно ли отображать в операции GET свойства, отличные от встроенной сущности.

Вот мой класс:

/**
 * @ORM\Table(name="folders")
 * @ORM\Entity(repositoryClass="App\Repository\FolderRepository")
 */
class Folder
{
    /**
     * @var int
     *
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(type="string", length=255)
     */
    private $name;

    /**
     * @ORM\ManyToOne(targetEntity="Folder", inversedBy="childFolders", cascade={"persist"})
     * @ORM\JoinColumn(name="folder_parent", referencedColumnName="id")
     */
    private $parentFolder;

    /**
     * @ORM\OneToMany(targetEntity="Folder", mappedBy="parentFolder", cascade={"persist"})
     */
    private $childFolders;

    /**
     * @ORM\OneToMany(targetEntity="File", mappedBy="folder", cascade={"persist"})
     * @ORM\JoinColumn(name="id_folder", referencedColumnName="id")
     */
    private $files;
}

Результат, который я хочу получить:

{
    "@context": "\/contexts\/Folder",
    "@id": "\/api\/folders\/561",
    "@type": "Folder",
    "id": 561,
    "name": "SOURCE(6)",
    "parentFolder": {
        "@id": "\/api\/folders\/52",
        "@type": "Folder",
        "id": 52,
        "name": "ashirama workspace",
        "parentFolder": null
     },
     "files": [
        {
            "name": "file(1).png"
        }
      ]
}

Фактический результат:

{
    "@context": "\/contexts\/Folder",
    "@id": "\/api\/folders\/561",
    "@type": "Folder",
    "id": 561,
    "name": "SOURCE(6)",
    "parentFolder": {
        "@id": "\/api\/folders\/52",
        "@type": "Folder",
        "id": 52,
        "name": "ashirama workspace",
        "parentFolder": null,
        "files": [
              {
                   "name": "file(1).png"
              }
         ]
      },
     "files": [
        {
            "name": "file(2).png"
        }
     ]
}

Я хотел бы, чтобы файлы были только в реальной папке.Я думаю, что есть кое-что, чего я не понимаю, но, возможно, есть известный рецепт для этого варианта использования.

Спасибо.

...