gpt4 book ai didi

php - Api 平台 : Eager Loading a Subresource

转载 作者:可可西里 更新时间:2023-11-01 00:39:17 27 4
gpt4 key购买 nike

大家好,我刚开始使用 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;
}

阿博:

/**
* @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;
}

当我现在调用这个 url /api/bills 时,我得到了这个数据:

{
"@id": "/api/bills/14",
"@type": "Bill",
"id": 14,
"date": "2018-03-08T00:00:00+00:00",
"abo": "/api/abos/1"
},
...

但不是这个 "abo": "/api/abos/1" 我想要 Abo 数据已经加载,像这样:

"abo": {
"name": "TestAbo",
"price": 25
}

这可能吗?如果可以,我该如何实现?

感谢您的宝贵时间和帮助!

最佳答案

您可以为此使用序列化组。确保您的关系字段 $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;

...
}

您可以在 docs 中阅读更多内容.

关于php - Api 平台 : Eager Loading a Subresource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50852130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com