【问题标题】:HTTP 500 ERROR An exception occurred Symfony/EasyAdminHTTP 500 错误 Symfony/EasyAdmin 发生异常
【发布时间】:2021-12-08 13:22:19
【问题描述】:

执行查询时发生异常:SQLSTATE[23502]:Not null 违规:7 错误:关系“book”的“genre_id”列中的空值违反了非空约束 详细信息:失败行包含 (7, blabla, abababa, 0, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Inte..., 21/07/2007, null, null, null, null)。

写入图书数据时出现此错误。我尝试输入流派的名称genre_id,但它不起作用。 ID 是 Symfony 自动生成的,所以我不明白如何避免这种情况来创建图书数据。

精度:我在书本实体中建立了流派和书籍之间的多对一关系。

你知道如何避免这个错误吗?

我的书实体文件:

...
/**
* @ORM\Column(type="string", length=255)
     */
    private $genre;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $description;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $date_de_parution;

    /**
     * @ORM\ManyToOne(targetEntity=Genre::class, inversedBy="livres")
     * @ORM\JoinColumn(nullable=false)
     */
    private $Genre;


[![genre table related to books][1]][1]
  [1]: https://i.stack.imgur.com/GWQNR.png

【问题讨论】:

    标签: postgresql symfony easyadmin


    【解决方案1】:

    您的流派是必需的 (nullable=false) 外键。所以保存到数据库时需要设置一个流派。

    如果您希望书籍没有流派,您应该使用nullable=true 流派参考。请记住,您的 Genre 获取器/设置器也应反映此 nullable 回报。

    /**
     * @return Genre|null
     */
    public function getGenre(): ?Genre   // See the questionmark (for php 7+ only)
    {
        return $this->Genre;
    }
    

    [更新 - 错过了 EasyAdmin 部分]

    使用管理员生成器时,您应该寻找诸如如何管理关系之类的东西。看来 EasyAdmin 的文档不是很好。查看the demo application 似乎有一个AssociationField 字段类型,可以用来引用关系。

    【讨论】:

    • 我不知道我是否不明白,但如果我希望书籍永远不会为空并且总是有流派(已经写在另一个相关表中,请参阅我的编辑问题)我该怎么做?
    • 您必须在创建书籍时添加流派。我错过了您问题中的 EasyAdmin 部分。使用管理员生成器时,您应该寻找诸如如何管理关系之类的东西。快速查看演示应用程序代码库后,在引用关系时似乎有一个 AssociationField 字段类型。在您的情况下:AssociationField::new('genre') 应添加到 BookControllerconfigureFields 方法中。看这里并搜索AssociationFieldgithub.com/EasyCorp/easyadmin-demo/blob/main/src/Controller/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2017-07-13
    相关资源
    最近更新 更多