使用 api-platform 存储数据
Store data with api-platform
我想存储一些对象,我传递了我的参数,但是 setter 没有用
我的实体是这样的:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\DiExtraBundle\Annotation\Inject;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* Project
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\ProjectRepository")
*/
class Project
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"Project"})
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45)
* @Groups({"Project"})
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Project", cascade={"remove"})
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({"Project"})
*/
private $parent;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Status")
* @ORM\JoinColumn(nullable=true)
* @Groups({"Project"})
*/
private $status;
还有我的 service.yml :
resource.project.search_filter:
parent: "api.doctrine.orm.search_filter"
arguments: [ { id: "exact", name: "partial", parent: ~ } ]
resource.project.order_filter:
parent: "api.doctrine.orm.order_filter"
arguments: [ { "id": ~, "name": ~ } ]
resource.project:
parent: "api.resource"
arguments: [ "AppBundle\Entity\Project" ]
calls:
- method: initNormalizationContext
arguments: [ { groups: [ Project ] } ]
- method: "initFilters"
arguments: [ [ "@resource.project.search_filter", "@resource.project.order_filter"] ]
tags: [ { name: "api.resource" } ]
我不明白 POST 请求是如何工作的,因为 none 我的实体属性已定义。
它适用于演示实体但不适用于我的实体,我是不是漏掉了一些注释?或者我的配置不完整?
尝试按以下方式传递您的实体:
有一个斜杠
arguments: [ "AppBundle\Entity\Project" ]
或者,如果您将实体传递给存储库传递如下。
参数:["AppBundle:Project"]
并将以下注释放入您的存储库
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProjectRepository")
我想存储一些对象,我传递了我的参数,但是 setter 没有用
我的实体是这样的:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\DiExtraBundle\Annotation\Inject;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* Project
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\ProjectRepository")
*/
class Project
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"Project"})
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=45)
* @Groups({"Project"})
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Project", cascade={"remove"})
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({"Project"})
*/
private $parent;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Status")
* @ORM\JoinColumn(nullable=true)
* @Groups({"Project"})
*/
private $status;
还有我的 service.yml :
resource.project.search_filter:
parent: "api.doctrine.orm.search_filter"
arguments: [ { id: "exact", name: "partial", parent: ~ } ]
resource.project.order_filter:
parent: "api.doctrine.orm.order_filter"
arguments: [ { "id": ~, "name": ~ } ]
resource.project:
parent: "api.resource"
arguments: [ "AppBundle\Entity\Project" ]
calls:
- method: initNormalizationContext
arguments: [ { groups: [ Project ] } ]
- method: "initFilters"
arguments: [ [ "@resource.project.search_filter", "@resource.project.order_filter"] ]
tags: [ { name: "api.resource" } ]
我不明白 POST 请求是如何工作的,因为 none 我的实体属性已定义。
它适用于演示实体但不适用于我的实体,我是不是漏掉了一些注释?或者我的配置不完整?
尝试按以下方式传递您的实体:
有一个斜杠
arguments: [ "AppBundle\Entity\Project" ]
或者,如果您将实体传递给存储库传递如下。
参数:["AppBundle:Project"]
并将以下注释放入您的存储库
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProjectRepository")