Php “拉维关系”;“无型号”; 简短解释

Php “拉维关系”;“无型号”; 简短解释,php,laravel,Php,Laravel,我有条形码,其中包含有关库存货架的数据。我有多个shelf,不想为每个shelf位置和级别创建自己的数据库记录。相反,我有关于每个书架包含多少个位置(又名列)和级别(又名行)的记录 是否可以通过使用条形码搜索来解析和返回此类自定义模型 更详细的解释 我有可扫描的条形码附在每个库存货架上。条形码包含有关货架、位置和标高的数据 在数据库中,我有一个模型架,它有整数属性“places”和“levels” 在下面的例子中,我有3个架子。货架A是最大的一个,每4层有8个存储位置。架子B稍微小一点,架子C是

我有条形码,其中包含有关库存货架的数据。我有多个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相同,您不能将它的列应用于模型吗?因此,从您所说的来看,它确实意味着在一个地方可以有多个包?