我有一张table item
列是谁的
id type
code image
####类型列 type
是枚举,可以是 text
或者 logo
.
可能的情况
如果 type === 'text'
那么 image
是 null
如果 type === 'logo'
那么 code
是 null
####我想要什么
如果 type === 'text'
唯一性定义为 code
如果 type === 'logo'
唯一性定义为 image
####问题
如何在mysql中编写这个惟一的约束?和拉威尔一起迁移?
2条答案
按热度按时间juzqafwq1#
在迁移表中创建默认值为null的代码和图像列,如果不为某列设置值,则该列的值将自动为null
mcvgt66p2#
我不认为你可以用这种方式声明一个唯一的约束。你可以简化你的table,保持你的
type
列,但使用单个字段code
或者logo
. 你可以叫这个领域value
例如。然后您可以向type
以及value
这样地:为了方便起见,您可以在模型中添加访问器来访问
code
或者image
好像它们是字段,例如:这将允许您访问
code
以及image
就像它们是字段一样,您的模型将返回value
或者null
根据你的工作类型Item
.