gpt4 book ai didi

symfony4 - API 平台 : associate many resources to a same entity

转载 作者:行者123 更新时间:2023-12-05 07:22:34 26 4
gpt4 key购买 nike

我想创建 2 个不同的资源 App\Resource\Category 和 App\Resource\Classification,它们将关联到同一个实体 App\Entity\Classification。我们有 2 个不同的端点 v1/classifications 和 v2/categories。我希望这两个资源都扩展同一个实体。

伪代码示例:

<?php
// src/Entity/Classification.php
namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity(repositoryClass="App\Repository\ClassificationRepository")
*/
class Classification
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;

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

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

/**
* @ORM\OneToMany(targetEntity="App\Entity\ClassificationAttribute", mappedBy="classification")
*/
private $classificationAttributes;

public function __construct()
{
$this->classificationAttributes = new ArrayCollection();
}

public function getId()
{
return $this->id;
}

// ... getter and setter methods
}
<?php
// src/Resource/Classification.php
namespace App\Resource;

use ApiPlatform\Core\Annotation\ApiResource;
use App\Entity\Classification as ClassificationEntity;

/**
* ...
* @ApiResource(
* collectionOperations={"get"},
* itemOperations={"get"}
* )
*/
class Classification extends ClassificationEntity
{
// ...
}
<?php
// src/Resource/Category.php
namespace App\Resource;

use ApiPlatform\Core\Annotation\ApiResource;
use App\Entity\Classification as ClassificationEntity;

/**
* ...
* @ApiResource(
* collectionOperations={"get"},
* itemOperations={"get"}
* )
*/
class Category extends ClassificationEntity
{
// ...
}

每个资源都会有它的端点、序列化器、规范化器等等……总而言之,每个资源都会以自己的方式定制。

除非不可能同时使用注释和继承:不使用扩展实体的注释。

我可以将不同的 DataProvider 与每个资源相关联,并将这些 DataProvider 插入存储库。但是这样做,我失去了 Doctrine ORM 扩展的所有原生功能,并且不得不重新实现我使用的每个功能(许多例子中的一个:@ApiFilter)

有没有更简单的方法将许多资源关联到同一个实体?

感谢您的帮助。

最佳答案

您需要将资源文件夹添加到 api/config/packages/api_platform.yaml 中的映射路径:

api_platform:
mapping:
paths:
- '%kernel.project_dir%/src/Entity'
- '%kernel.project_dir%/src/Resource'

不在这些路径中的资源将被忽​​略。

关于symfony4 - API 平台 : associate many resources to a same entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460349/

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