![](/img/trans.png)
[英]What is the best way to store multiple checkbox values in the database and work with it later on
[英]Best way to store checkbox values to database?
我要完成一个简单的任务,但我不知道最好的方法是什么。
我的数据库中有一个Listings表,我需要关联一个规范列表,这是代理必须选择的复选框列表。
桌子看起来像这样。 -id-大小-类型-位置
现在我该如何存储复选框值? 我应该创建一个新表“ Listings_Specs”并通过“ listing_id”将每一行与“ Listings”表关联,还是应该将其保留在“ Listings”表中并向其中添加其他字段。
我正在使用Laravel 4。
如果listing和listing_specs具有1到1的关系,则不需要表listing_specs,可以将字段添加到Listing表中。
编辑
if you have multiple values in a single field therefore you have to promote this field to a table.
`
Listing:
remove the field for the specs
Listing_specs:
ID | CONTENT | LIST_ID
1 | "fsafs" | 1
2 | "fsafs" | 1
3 | "fsafs" | 1
4 | "fsafs" | 2
5 | "fsafs" | 3`
在不了解您的需求细节的情况下很难告诉您最好的方法。 通常,最好创建一个新表并将其通过“ listing_id”与“ Listings”表相关联,就像您提到的那样。 这为您提供了更大的灵活性。 请记住为“ listing_id”建立索引。
另一种方法是将所有复选框直接包含在“列表”表中。 您可以为每个复选框添加一列。 这是最简单但最不灵活的方法。 如果复选框的数量随时间变化,则必须继续修改表。
或者,您可以为所有复选框添加一个字段。 该字段的每个字节都代表一个复选框,因此字节数应与复选框的数目相同,并且顺序相同(或者您必须在某处指定顺序)。 这有点复杂,也不是很灵活,因为每次更改复选框时都必须修改此字段。 但是,这样做的好处是您可以使用一个字段,如果有很多复选框,该字段将很方便。 如果您希望提高可读性,则可以使用字符(即1和0)代替字节。
示例:假设您有5个复选框,“列表”表将如下所示:
ID | specs
1 | "10110"
2 | "01100"
3 | "11100"
4 | "00010"
5 | "01010"
因此,我会采用您提到的第一个解决方案,但这实际上取决于您的需求。
这完全听起来像是他们将来可能希望您添加的更多内容。 我会避免为计划跟踪的每个规范创建列。
取而代之的是,创建一个名为Specification
的新模型,该模型与Listings
很多关系。
然后,检查状态将取决于通过多对多联接表在Specification
和Listing
之间存在的连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.