Laravel关系:每个问题限制一个资产,但允许问题有多个资产

Laravel关系:每个问题限制一个资产,但允许问题有多个资产,laravel,relationship,Laravel,Relationship,tldr;防止同一资产多次附加到同一问题 我正在为我的学校计算机资产创建问题数据库 目前,我在问题和资产之间有一个多对多关系,以及资产问题的透视表 Issue id - integer title - string Asset id - integer owner - string Asset_Issue asset_id - integer issue_id - integer specific_asset_issue_problem - string 我能够多次将同一资产附加到同一问题

tldr;防止同一资产多次附加到同一问题

我正在为我的学校计算机资产创建问题数据库

目前,我在问题和资产之间有一个多对多关系,以及资产问题的透视表

Issue
id - integer
title - string

Asset
id - integer
owner - string

Asset_Issue
asset_id - integer
issue_id - integer
specific_asset_issue_problem - string
我能够多次将同一资产附加到同一问题上


我希望防止同一资产被多次附加到同一问题,但我仍然希望使用枢轴(Asset_Issue),因为它存储与问题资产相关的其他信息。

您可以使用复合唯一索引。将此添加到迁移中:

$table->unique(['asset\u id','issue\u id'])

这将防止
资产标识
发行标识
的相同组合,例如,这是不允许的:

asset_id | issue_id
1        | 1
1        | 1
asset_id | issue_id
1        | 1
1        | 2
2        | 1
2        | 2
但这是允许的:

asset_id | issue_id
1        | 1
1        | 1
asset_id | issue_id
1        | 1
1        | 2
2        | 1
2        | 2

您可以使用复合唯一索引。将此添加到迁移中:

$table->unique(['asset\u id','issue\u id'])

这将防止
资产标识
发行标识
的相同组合,例如,这是不允许的:

asset_id | issue_id
1        | 1
1        | 1
asset_id | issue_id
1        | 1
1        | 2
2        | 1
2        | 2
但这是允许的:

asset_id | issue_id
1        | 1
1        | 1
asset_id | issue_id
1        | 1
1        | 2
2        | 1
2        | 2

嗨,我不知道我是否明白你想做什么。是否要防止同一资产多次附加到同一问题?或者一次发行应该只有一个资产?你好,德莱娜,我想防止同一资产被多次附加到同一发行。感谢您在数据库级别上的澄清,您可以在
Asset\u id
Issue\u id
上的
Asset\u Issue
表中添加一个唯一的键,如果有,您可以将其添加到迁移中。嘿,martincarlin87,我考虑过了。添加唯一密钥也会限制问题拥有一个或多个资产。除了放置唯一的密钥,您还知道其他方法吗?嗨,我不确定我是否了解您想要做什么。是否要防止同一资产多次附加到同一问题?或者一次发行应该只有一个资产?你好,德莱娜,我想防止同一资产被多次附加到同一发行。感谢您在数据库级别上的澄清,您可以在
Asset\u id
Issue\u id
上的
Asset\u Issue
表中添加一个唯一的键,如果有,您可以将其添加到迁移中。嘿,martincarlin87,我考虑过了。添加唯一密钥也会限制问题拥有一个或多个资产。除了放置唯一的密钥,您还知道其他方法吗?