繁体   English   中英

将复选框值存储到数据库的最佳方法?

[英]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很多关系。

然后,检查状态将取决于通过多对多联接表在SpecificationListing之间存在的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM