Dar*_*rio 5 php rest symfony api-platform.com symfony4
大家好,我刚刚开始使用Api-Platform,这个问题困扰了我几个小时。
我有一个Symfony4项目和两个实体:Bill&Abo
法案:
/**
* @ORM\Entity(repositoryClass="App\Repository\BillRepository")
* @ApiResource
*/
class Bill {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="date", nullable=false)
*/
private $date;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Abo", inversedBy="bills")
* @ORM\JoinColumn
* @ApiSubresource
*/
private $abo;
}
Run Code Online (Sandbox Code Playgroud)
阿波:
/**
* @ORM\Entity(repositoryClass="App\Repository\AboRepository")
* @ApiResource
*/
class Abo
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=50, nullable=false)
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="price", type="integer", nullable=false)
*/
private $price;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Bill", mappedBy="abo")
*/
private $bills;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我将此网址称为时/api/bills,我将获取以下数据:
{
"@id": "/api/bills/14",
"@type": "Bill",
"id": 14,
"date": "2018-03-08T00:00:00+00:00",
"abo": "/api/abos/1"
},
...
Run Code Online (Sandbox Code Playgroud)
但是,"abo": "/api/abos/1"我希望已经加载了Abo数据,而不是这样:
"abo": {
"name": "TestAbo",
"price": 25
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果可以,我该如何实现?
感谢您的时间和帮助!
您可以为此使用序列化组。确保您的关系字段$abo及其成员字段组是公开的。
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass="App\Repository\BillRepository")
* @ApiResource(attributes={
* "normalization_context"={"groups"={"bill", "bill-abo", "abo"}}
* })
*/
class Bill {
...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Abo", inversedBy="bills")
* @ORM\JoinColumn
* @ApiSubresource
* @Groups("bill-abo")
*/
private $abo;
...
}
class Abo {
...
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=50, nullable=false)
* @Groups("abo")
*/
private $name;
...
}
Run Code Online (Sandbox Code Playgroud)
您可以在docs中阅读更多内容。
| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |