Php “拉维关系”;“无型号”; 简短解释
我有条形码,其中包含有关库存货架的数据。我有多个shelf,不想为每个shelf位置和级别创建自己的数据库记录。相反,我有关于每个书架包含多少个位置(又名列)和级别(又名行)的记录 是否可以通过使用条形码搜索来解析和返回此类自定义模型 更详细的解释 我有可扫描的条形码附在每个库存货架上。条形码包含有关货架、位置和标高的数据 在数据库中,我有一个模型架,它有整数属性“places”和“levels” 在下面的例子中,我有3个架子。货架A是最大的一个,每4层有8个存储位置。架子B稍微小一点,架子C是最小的,只有两个位置和一层Php “拉维关系”;“无型号”; 简短解释,php,laravel,Php,Laravel,我有条形码,其中包含有关库存货架的数据。我有多个shelf,不想为每个shelf位置和级别创建自己的数据库记录。相反,我有关于每个书架包含多少个位置(又名列)和级别(又名行)的记录 是否可以通过使用条形码搜索来解析和返回此类自定义模型 更详细的解释 我有可扫描的条形码附在每个库存货架上。条形码包含有关货架、位置和标高的数据 在数据库中,我有一个模型架,它有整数属性“places”和“levels” 在下面的例子中,我有3个架子。货架A是最大的一个,每4层有8个存储位置。架子B稍微小一点,架子C是
| Id | Name | Places | Levels |
|----|------|--------|--------|
| 1 | A | 8 | 4 |
| 2 | B | 5 | 4 |
| 3 | C | 2 | 1 |
另一个模型包属于带枢轴的架子。包装可以放在货架A、位置1和标高2
{
id: 1,
shelf_id: 1,
receiver_id: 123,
pivot: {
place: 1,
level: 2
},
id: 2,
shelf_id: 1,
receiver_id: 567,
pivot: {
place: 1,
level: 2
},
}
现在,当我使用条形码数据“A-1-2”(条形码数据:SHELF-AREA-LEVEL
)搜索时,我会得到ID为1和2的包裹
{
id: 1,
name: 'A',
place: 1,
level: 2,
packages: [
{
id: 1,
receiver_id: 123,
},
{
id: 2,
receiver_id: 456,
}
]
}
这是可能的还是为每个地方做一个记录更好?我认为这取决于您对软件的进一步要求。据我所见,你可以在一个架子上的一个地方有多个包裹。 如果在
工具架
模型中存储位置和标高的数量,则假定该工具架中的所有标高和位置共享相同的属性(例如高度、宽度等)。
如果情况确实如此,我认为你可以采用你提出的模式
但是,您现在正在将包的位置存储在一个数据透视中—只有当您希望为同一个包和工具架拥有多个条目时,这才有意义,例如,如果您将包移动到另一个工具架,并且希望保留旧信息。如果您不需要“位置历史记录”,您可以将级别和位置放在包模型中,而不是放在轴中
如果你想完全“关系MySQL风格”,我会为每个属性创建不同的模型。包
应位于位置
,位置
位于层
内,层
属于架
,提供以下结构
Shelf (id, name)
Level (id, shelf_id)
Place (id, level_id)
Package (id, place_id)
这样,您就可以存储每个级别/位置的附加信息。但这取决于您的需求以及您的软件应该能够完成的功能。我认为这取决于您对软件的进一步需求。据我所见,你可以在一个架子上的一个地方有多个包裹。
如果在工具架
模型中存储位置和标高的数量,则假定该工具架中的所有标高和位置共享相同的属性(例如高度、宽度等)。
如果情况确实如此,我认为你可以采用你提出的模式
但是,您现在正在将包的位置存储在一个数据透视中—只有当您希望为同一个包和工具架拥有多个条目时,这才有意义,例如,如果您将包移动到另一个工具架,并且希望保留旧信息。如果您不需要“位置历史记录”,您可以将级别和位置放在包模型中,而不是放在轴中
如果你想完全“关系MySQL风格”,我会为每个属性创建不同的模型。包
应位于位置
,位置
位于层
内,层
属于架
,提供以下结构
Shelf (id, name)
Level (id, shelf_id)
Place (id, level_id)
Package (id, place_id)
这样,您就可以存储每个级别/位置的附加信息。但这取决于您的需求以及您的软件应该能够完成的功能。如果您的软件包只包含两列,其中一列是主键,那么我会将其转换为模型上的一列。与pivot相同,您不能将它的列应用于模型吗?因此,从您所说的内容来看,它确实意味着在一个地方可以有多个包?如果您的包只包含两列,其中一列是主键,我会将其改为模型上的列。与pivot相同,您不能将它的列应用于模型吗?因此,从您所说的来看,它确实意味着在一个地方可以有多个包?