具有 TimestampableEntity 特征的实体在 PUT 操作中失败

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

我正在全新安装 API Platform (v3.2.7),并且正在使用

Gedmo\Timestampable\Traits\TimestampableEntity

这是我的实体(问候语示例)

<?php

namespace App\Entity;

use ApiPlatform\Metadata\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

use Gedmo\Timestampable\Traits\TimestampableEntity;

#[ApiResource]
#[ORM\Entity]
class Greeting
{
    use TimestampableEntity;

    #[ORM\Id]
    #[ORM\Column(type: "integer")]
    #[ORM\GeneratedValue]
    private ?int $id = null;

    #[ORM\Column]
    #[Assert\NotBlank]
    public string $name = "";

    public function getId(): ?int
    {
        return $this->id;
    }
}

和我的 config/services.yaml

gedmo.listener.timestampable:
    class: Gedmo\Timestampable\TimestampableListener
    tags:
        - { name: doctrine.event_listener, event: 'prePersist' }
        - { name: doctrine.event_listener, event: 'onFlush' }
        - { name: doctrine.event_listener, event: 'loadClassMetadata' }

它在

POST
操作上工作正常,但在执行
PUT
时失败。我收到此错误

执行查询时发生异常:SQLSTATE[23000]: 完整性约束违规:1048 列“created_at”不能 空

我使用的版本是:symfony 6.4.1,doctrine 2.12,gedmo 3.14

symfony doctrine-orm api-platform.com doctrine-extensions
1个回答
0
投票

我最终做的是使用

PATCH
而不是
PUT
。所以我可以编辑部分实体,并且特征仍然更新
updated_at
字段

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