Я пытаюсь отобразить вложенные документы по умолчанию, то есть, когда я запрашиваю API, он должен вернуть документы с их связями.
Два моих лица:
<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Traits\TimestampableTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ApiResource()
* @ORM\Entity(repositoryClass="App\Repository\ClaimRepository")
* @ORM\Table("claims")
*/
class Claim
{
use TimestampableTrait;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Activity", mappedBy="claim", cascade={"persist", "remove"})
*/
private $activities;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\ClaimState", inversedBy="claims", cascade={"persist", "remove"})
* @ORM\OrderBy({"id" = "desc"})
*/
private $states;
А другой:
<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Traits\TimestampableTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ApiResource()
* @ORM\Entity(repositoryClass="App\Repository\ActivityRepository")
* @ORM\Table("activities")
*/
class Activity
{
use TimestampableTrait;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Claim", inversedBy="activities")
*/
private $claim;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Invoice", mappedBy="activity", orphanRemoval=true, cascade={"persist","remove"})
*/
private $invoices;
/**
* @ORM\OneToMany(targetEntity="App\Entity\ActivityError", mappedBy="activity", cascade={"persist","remove"})
*/
private $errors;
Когда я делаю GET /claims
, я бы хотел, чтобы он отобразил отношения Activity
со всеми свойствами, и сейчас я получаю:
{
"data": {
"id": "/claims/7",
"type": "Claim",
"attributes": {
"_id": 7,
"name": "My Valid Claim",
"created": "2019-01-07T15:14:21+01:00",
"updated": "2019-01-07T15:14:21+01:00"
},
"relationships": {
"activities": {
"data": [
{
"type": "Activity",
"id": "/activities/7"
}
]
}
}
}
}
Я бы хотел получить что-то вроде этого:
{
"data": {
"id": "/claims/7",
"type": "Claim",
"attributes": {
"_id": 7,
"name": "My Valid Claim",
"created": "2019-01-07T15:14:21+01:00",
"updated": "2019-01-07T15:14:21+01:00"
},
"relationships": {
"activities": {
"data": [
{
"type": "Activity",
"id": "/activities/7",
"attributes": {
"_id": 7,
"name": "Activity no. 1",
"created": "2019-01-07T15:14:21+01:00",
"updated": "2019-01-07T15:14:21+01:00"
},
"relationships": {
"invoices": {
"data": [
{
"type": "Invoice",
"id": "/invoices/7",
"attributes": {
"_id": 7,
"vendor": "Vendor Ltd."
}
}
]
}
}
}
]
}
}
}
}
Используется формат JSON:API
. Я пытался использовать группы, но это совсем не помогло, и я не могу ничего найти ни в одной документации.
Любая помощь приветствуется.