我建立了一个非常简单的Group -> GroupUser -> User
关系(GroupUser是一个带有附加数据字段的联接表,Group OneToMany GroupUsers,它有ManyToOne Group和User,以及User有OneToMany GroupUser),但是在接收invalid IRI
错误的情况下无法将其发布到API中。在这方面似乎有些混乱,我在这方面找到了几个帖子(这里和这里),但没有一个能清楚地解决我最基本的场景(我遵循了API平台文档,并有一个带有需求api-platform/api-pack
安装的Symfony4 )。
我使用IRI来关联对象,但是下面的POST不起作用(我有一个id 1的用户和一个id 1的组),并返回Invalid value provided (invalid IRI?)
错误:
curl -X POST "http://api.platform.local/group_users" -H "accept: application/ld+json" -H "Content-Type: application/ld+json" -d "{ \"group\": \"/groups/1\", \"user\": \"/users/1\", \"role\": \"member\"}"
以下是我的实体:
应用程序/实体/组
/**
* @ORM\OneToMany(targetEntity="GroupUser", mappedBy="group")
*/
private $users;
应用程序/实体/用户
/**
* @ORM\OneToMany(targetEntity="GroupUser", mappedBy="user")
*/
private $groups;
App/实体/GroupUser
/**
* @Assert\NotBlank
* @ORM\JoinColumn(
* nullable=false,
* onDelete="CASCADE"
* )
* @ORM\ManyToOne(
* inversedBy="users",
* targetEntity="App\Entity\Group"
* )
*/
private $group;
/**
* @Assert\NotBlank
* @ORM\JoinColumn(
* nullable=false,
* onDelete="CASCADE"
* )
* @ORM\ManyToOne(
* inversedBy="groups",
* targetEntity="App\Entity\User"
* )
*/
private $user;
我肯定缺少一些基本的东西,但是文档似乎不需要任何其他的东西。这篇文章没有帮助,我甚至为UserGroup实体添加了一个id,最初我只有user
和group
作为表id。
非常感谢您的帮助,非常感谢。
发布于 2018-08-07 04:42:27
我终于明白了,其实我犯了两个错误:
非常直接地,下面是我添加到GroupUser实体中的内容:
/**
* @var int
*
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Id
*/
private $id;
别忘了getter方法:
public function getId(): ?int
{
return $this->id;
}
https://stackoverflow.com/questions/51459537
复制相似问题