将多个选项从下拉列表存储到数据库的最佳方法是什么?

时间:2016-02-23 07:19:58

标签: php mysql laravel serialization multi-select

我有一个多选下拉列表。一世: doc

我只是想知道将它存储到MySQL数据库的最佳方法是:  1)PHP或2)的 serialise()方法,具有不同的符号,如逗号(,)竖线(|)等。

例如,我有 cities 表。它包含 city_id city_name 。 一个人可能会前往一个以上的城市。所以他会选择多个城市。我想以某种方式存储这个选择,以便我可以在需要时使用它们通过mysql连接。

我使用Laravel 5.

2 个答案:

答案 0 :(得分:2)

你将有3张桌子:

  • 城市(身份证,姓名)
  • 用户(身份证,姓名)
  • City_user(id,id_city,id_user)

例如,您的用户(1,Sakuto)已前往(1,比利时)和(2,法国),您的表city_user将包含:

  • (1,1,1)(用户1已前往城市1)
  • (2,2,1)(用户1已前往城市2)

答案 1 :(得分:1)

以规范化方式存储数据的正确方法是为所选城市设置单独的表格。

我不知道您的选择与哪些权限有关,但请说是用户。

用户表

id   int
name string

userCities表:

id       int
userId   int
cityId   int

城市

id       int
name     string

因此,如果用户选择三个城市,他或她将在users表中有一行,在userCities中有三行。与将表中的选择作为连接值存储在users表的一列中相比,这样做可以创建更好,更快的查询。要检索用户及其城市,您可以使用userCities和city进行外部联接(以便还可以返回没有城市的用户)。