试图在Postgres数据库上用Doctrine为两个字段创建UniqueConstraint,在运行make:migration
时出错。
"编译错误:常量表达式包含无效操作";
我在SO上搜索了一下,它似乎与在类中创建静态属性有关。
不确定它为什么这样解释下面的代码:
#[
ORMEntity(repositoryClass: SalesChannelRepository::class),
ORMTable(
name: "sales_channel",
schema: "my_schema",
UniqueConstraint: [
UniqueConstraint(
name: "name_idx",
fields: ["sales_channel_name_id", "multi_channel_id"]
),
]
),
]
这些属性似乎与条令文件一致。
我确实尝试了一些变体,比如使用columns
而不是字段,或者使用ORMUniqueConstraint
,但这并没有帮助。
删除特定属性后运行make:migration
效果良好。
根据文档(https://www.doctrine-project.org/projects/doctrine-orm/en/2.11/reference/attributes-reference.html#attrref_uniqueconstraint),以及我练习的内容。你应该尝试修复:
use DoctrineORMMapping as ORM;
#[ORMEntity(repositoryClass: SalesChannelRepository::class)]
#[ORMTable(name: "sales_channel")]
#[ORMUniqueConstraint(name: "name_idx", columns: ["sales_channel_name_id", "multi_channel_id"])]
class SalesChannel
{...