我正在全新安装 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
我最终做的是使用
PATCH
而不是 PUT
。所以我可以编辑部分实体,并且特征仍然更新 updated_at
字段