在我的项目中,我具有以下结构的动态形式:
- Date 1
- Shift 1
- Area 1
- Cell 1
- Cell 2
- Area 2
- Cell 3
- Cell 4
- Shift 2
- Area 1
- Cell 1
...
我从具有以下多维数组的输入中获取数据:data [index] [column],其中一列可能是:日期,班次,面积,单元格或单元格内容。
然后,我需要将此表单存储到数据库中,以便以后可以重新创建它。这很容易,因为我的数组具有表格形式:
index | Date | Shift | Area | Cell | Cell Content
1 05.06 1 1 1 100
2 05.06 1 1 2 99
3 05.06 1 2 3 55
4 05.06 1 2 4 66
5 05.06 2 1 1 35
但是,当重新创建表单(从数据库取回表单)时,最好将此数组转换为一个集合,以便能够进行以下操作:
foreach (dates as date)
foreach (date->shifts as shift)
foreach (shift->areas as area)
foreach (area->cells as cell)
echo cell->content
endforeach
endforeach
endforeach
endforeach
Laravel是否有可能?还是我需要使用旧方法:将当前元素与先例进行比较,并在不相同时中断for ??
答案 0 :(得分:1)
我在这里看到的问题是所有列都存储在同一张表中,即您具有非规范化的结构。一个简单的解决方案是对数据进行规范化(可能会带来成本),然后在Laravel中定义关系将非常简单。
所以我建议您将单个表拆分为:
现在,您还可以选择具有冗余数据,并将shift_id和date_id添加到单元格表中。如果您不关心节省空间,则可以用两种方式存储数据。
详细了解规范化https://www.geeksforgeeks.org/database-normalization-normal-forms/