Php 无现有实体的默认值

Php 无现有实体的默认值,php,mysql,doctrine-orm,composite-primary-key,composite-key,Php,Mysql,Doctrine Orm,Composite Primary Key,Composite Key,假设我们有名为元素的实体,这些实体可能属于名为布局的实体。元素和布局具有manytone关系,其中许多元素属于一个Layout 使用的数据库引擎是MySQL,另外我们使用一个唯一的键,layout\u id就是其中的一部分。因此,我们在元素表中有一个名为layout\u id的列,该列不能为null(因为复合唯一键),默认值为0。0的值是一个神奇的值,在整个代码库中被视为“未分配布局”(因此元素和布局之间没有FK) Doctrine ORM的问题是,它试图加载ID为0的布局,但找不到,因为它不存

假设我们有名为
元素
的实体,这些实体可能属于名为
布局
的实体。元素和布局具有
manytone
关系,其中许多元素属于一个
Layout

使用的数据库引擎是MySQL,另外我们使用一个唯一的键,
layout\u id
就是其中的一部分。因此,我们在
元素
表中有一个名为
layout\u id
的列,该列不能为
null
(因为复合唯一键),默认值为
0
0
的值是一个神奇的值,在整个代码库中被视为“未分配布局”(因此
元素
布局
之间没有FK)

Doctrine ORM的问题是,它试图加载ID为
0
的布局,但找不到,因为它不存在。我们无法创建ID为
0
Layout
条目,因为
Layouts
具有其他外键,并且具有其他约束


有没有关于如何克服这一问题的建议。基本上,当
元素
中的
布局id
0
时,我们不希望加载
布局
,在这种情况下,您无法将此
布局id
设置为复合键的一部分。这是因为外键约束。您的
layout\u id
必须是
nullable
(这意味着它不能是复合键的一部分),或者您必须在
layout
表中创建一行id为0(因此它可以用作标识符)

解决方案可以是不使用复合键,而是添加一个主键列来唯一标识实体(代理键)