Php 如何扩展与API平台一起工作的条令实体
当我想用API平台注释分离条令实体时,我有一个例子。 主要的问题是我能够创建一个资源,它看起来还可以,但是它没有保存在数据库中。似乎我还需要补充一点,但我不知道该在这里添加什么 映射是正确的,数据库是最新的 实体类:Php 如何扩展与API平台一起工作的条令实体,php,symfony,doctrine-orm,api-platform.com,Php,Symfony,Doctrine Orm,Api Platform.com,当我想用API平台注释分离条令实体时,我有一个例子。 主要的问题是我能够创建一个资源,它看起来还可以,但是它没有保存在数据库中。似乎我还需要补充一点,但我不知道该在这里添加什么 映射是正确的,数据库是最新的 实体类: 首先,示例类缺少$name属性。 添加private$name在$uuid之后,除非EntityExample具有该受保护/公共属性 您的ApiResource()注释类似乎没有序列化组注释,对任何属性都没有注释。 在api/config/packages/api_platfor
首先,示例类缺少$name
属性。
添加private$name代码>在$uuid之后,除非EntityExample具有该受保护/公共属性
您的ApiResource()注释类似乎没有序列化组注释,对任何属性都没有注释。
在api/config/packages/api_platform.yaml中,通常有以下配置:
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
如果apip确实找到了您的资源,它可能会是:
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/ApiPlatform']
但为了找到实体及其映射,应该如下所示:
api_platform:
mapping:
paths:
- '%kernel.project_dir%/src/Entity'
- '%kernel.project_dir%/src/Resources/config/doctrine'
- '%kernel.project_dir%/src/ApiPlatform'
doctrine查找映射的实际文件夹可能不同,请查看api/config/packages/doctrine.yaml
或者配置在何处。XML存储在何处?您是否配置了条令映射以便它读取该文件?是的,映射很好。它们经过验证,我可以在创建自己的CRUD系统时创建并保存实体实例。是的,它保护了$name属性,该属性在示例类的代码部分中指出
<?php
declare(strict_types=1);
namespace ApiPlatform;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
use Entity\Example as EntityExample;
use Ramsey\Uuid\UuidInterface;
/**
* @ApiResource(
* normalizationContext={"groups"={"read"}},
* denormalizationContext={"groups"={"write"}}
* )
*/
class Example extends EntityExample
{
/**
* @ApiProperty(identifier=true)
* @var UuidInterface
*/
protected $uuid;
/**
* @Groups({"read", "write"})
*/
private $name;
/**
* @return UuidInterface
*/
public function getUuid() : UuidInterface
{
return $this->uuid;
}
/**
* @return string
* @Groups({"read", "write"})
*/
public function getName() : string
{
return $this->name;
}
/**
* @param UuidInterface $uuid
*/
public function setUuid(UuidInterface $uuid) : void
{
$this->uuid = $uuid;
}
/**
* @param string $name
*/
public function setName(string $name) : void
{
$this->name = $name;
}
}
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/ApiPlatform']
api_platform:
mapping:
paths:
- '%kernel.project_dir%/src/Entity'
- '%kernel.project_dir%/src/Resources/config/doctrine'
- '%kernel.project_dir%/src/ApiPlatform'