我有麻烦了。当我在Symfony中执行持久化()和刷新()时,我得到了以下内容:
在执行“INSERT INSERT INSERT (emissao,total,cliente_id)值(?,?)”时发生异常。对于"2018-01-10“、"100.00”、“65c4002a-06e2-442 b-b1da-61197 f73ba3b”:SQLSTATEHY000:一般错误: 1364字段'id‘没有默认值。
我的注释在所有实体中都是相同的,但是在这个实体中,Doctrine不能创建自动id:
/**
* @var \Ramsey\Uuid\Uuid
*
* @ORM\Id
* @ORM\Column(type="uuid", unique=true)
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator")
*/
protected $id;由于字段ID是自动生成的,此错误似乎没有意义。我还有其他实体,比如Pessoa,它可以很好地使用相同的注释。
我如何强制原则“理解”UUID索引?
发布于 2018-01-10 17:28:40
当前原则不支持单个实体中的多个自动生成字段。如果有两个字段,Doctrine将为最后一个字段生成值,而左第一个字段将生成默认值(如果没有指定,则为null)。
由于Ramsey使用静态方法生成UUID,所以您应该将它的生成放置在持久逻辑的位置(管理器、处理程序或其他什么)或实体的构造函数中:
public function __construct()
{
$this->uuid = Uuid::uuid4()->toString();
}并删除相应的注释:
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator")另一个解决方案
由于您的第二列使用了数据库的自动增量特性(我假设您使用的是MySQL),您可以尝试:
AUTO_INCREMENT选项手动定义列定义(非便携和hacky IMHO):
发布于 2018-01-10 15:30:34
你需要:
id中的字段pedido是自动递增的主键。VALUES (?, ?, ?, ?)更改为VALUES (?, ?, ?),因为您只插入3个值https://stackoverflow.com/questions/48190332
复制相似问题