首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API平台-提供的无效值(无效的IRI?)如何与亲戚联系?

API平台-提供的无效值(无效的IRI?)如何与亲戚联系?
EN

Stack Overflow用户
提问于 2018-07-21 19:44:08
回答 1查看 7.4K关注 0票数 3

我建立了一个非常简单的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?)错误:

代码语言:javascript
运行
复制
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\"}"

以下是我的实体:

应用程序/实体/组

代码语言:javascript
运行
复制
/**
 * @ORM\OneToMany(targetEntity="GroupUser", mappedBy="group")      
 */
private $users;

应用程序/实体/用户

代码语言:javascript
运行
复制
/**
 * @ORM\OneToMany(targetEntity="GroupUser", mappedBy="user")
 */
private $groups;

App/实体/GroupUser

代码语言:javascript
运行
复制
/**
 * @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,最初我只有usergroup作为表id。

非常感谢您的帮助,非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 04:42:27

我终于明白了,其实我犯了两个错误:

  1. 我将值传递给__construct,以便在构造时填充GroupUser。我完全删除了__construct,这对API平台和自动IRI创建都不太好。
  2. 我在group_id和user_id上为我的GroupUser表使用了一个复合主键,我放弃了它,转而使用自己的ID。

非常直接地,下面是我添加到GroupUser实体中的内容:

代码语言:javascript
运行
复制
  /**
   * @var int
   *
   * @ORM\Column(type="integer")
   * @ORM\GeneratedValue(strategy="AUTO")
   * @ORM\Id
   */
  private $id;  

别忘了getter方法:

代码语言:javascript
运行
复制
  public function getId(): ?int
  {
    return $this->id;
  }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51459537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档