如何更新OneToMany资源

问题描述 投票:0回答:1

我是API平台的初学者。我正在使用两个具有Author关系的实体BookOneToMany

  • 一个用户可以拥有几本书
  • 一本书只能属于一个作者。

我尝试过POSTGETDELETE方法,它们可以工作。但是,PUT方法不起作用,并返回此错误:

“ hydra:title”:“发生错误”,

“ hydra:description”:**“执行'UPDATE Book SET author_id =?WHERE id =?时发生异常。带有参数[null,1]:\ n \ nSQLSTATE [23000]:

违反完整性约束:1048列'author_id'不能为空“

这是我的代码:

/**
 * @ORM\Entity(repositoryClass="App\Repository\AuthorRepository")
 * @ApiResource(
 *          normalizationContext={"groups"={"book:output"}},
 *          denormalizationContext={"groups"={"book:input"}}
 * )
 */
class Author
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @Groups({"book:input"})
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     * @Groups({"book:output", "book:input"})
     */
    private $firstname;

    /**
     * @ORM\Column(type="string", length=255)
     * @Groups({"book:output", "book:input"})
     */
    private $lastname;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Book", mappedBy="author", cascade={"all"})
     * @Groups({"book:output", "book:input"})
     */
    private $books;
/**
 * @ORM\Entity(repositoryClass="App\Repository\BookRepository")
 * @ApiResource()
 */
class Book
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @Groups({"book:output", "book:input"})
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     * @Groups({"book:output", "book:input"})
     */
    private $name;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Author", inversedBy="books")
     * @ORM\JoinColumn(nullable=false)
     */
    private $author;
symfony symfony4 api-platform.com
1个回答
0
投票

[您能否添加您的控制器代码-似乎您是在尝试更新书本感,而没有必填的$ author强制信息,不能为空-'UPDATE Book SET author_id =吗? id =?'带有参数[null,1]

© www.soinside.com 2019 - 2024. All rights reserved.