Php 在一个db列中存储多个值
我正在尝试创建一个透视表,以帮助跟踪我的应用程序中的“挑战”。基本上,我有一个Php 在一个db列中存储多个值,php,mysql,laravel,Php,Mysql,Laravel,我正在尝试创建一个透视表,以帮助跟踪我的应用程序中的“挑战”。基本上,我有一个challenge\u taskpivot表,它在挑战和任务之间创建了一个关系。当处于挑战中的用户完成任务时,我希望能够告知,以便跟踪用户的进度。如何存储完成挑战任务的多个用户的最佳方式 我想在pivot表中添加一个名为user\u completed的json列来处理这个问题,并为每个完成挑战任务的用户存储user\u id 所以挑战任务看起来像 challenge_id | task_id | user_compl
challenge\u task
pivot表,它在挑战和任务之间创建了一个关系。当处于挑战中的用户完成任务时,我希望能够告知,以便跟踪用户的进度。如何存储完成挑战任务的多个用户的最佳方式
我想在pivot表中添加一个名为user\u completed
的json
列来处理这个问题,并为每个完成挑战任务的用户存储user\u id
所以挑战任务看起来像
challenge_id | task_id | user_completed
这是个好办法吗?或者有更适合这个的吗 如果要为数据编制索引,我不推荐使用Json,因为Json无法编制索引。
我认为您也应该在用户和任务之间创建一个透视表,并创建必要的关系。我不建议您在一个数据库列中插入多个值
注意:这是我的意见。只是分享我使用它的方式。 一个名为tasks\u settings的表,其中包含任务设置 我觉得这种方式很灵活,因为我总是可以轻松地编辑标题、描述和奖励。我还可以在这里添加另外两个字段,它们分别是有效的和有效的。因此,您可以使其在一段时间后过期,并且仅适用于特殊级别的人员或所有用户 另一个名为users\u tasks的表 这一个控制着用户。他们是否完成了任务。这也可以实现你所期待的
id | challenge_id | task_id | username | user_completed
我希望这对你有帮助 我建议使用如下数据库结构:
challenge: challenge_id | other data
task: task_id | other data
user: user_id | other data
challenge_task: challenge_task_id | challenge_id | task_id
| possibly more data (such as deadline for completion)
challenge_task_users: challenge_task_id | user_id
| possibly more data (such as status: accepted, in progress, completed)
“一个db列中有多个值”几乎总是一个坏主意。@uEERDO如果一个挑战只有两个用户,那么我应该像透视表上的
user\u a\u completed
和user\u b\u completed
列一样,添加user\u id
,当用户完成挑战时,每次只需新建一行。不需要在一行中存储多个用户id。您可以在MySQL中使用超过某个版本(不记得数字)的json
列,但根据我的经验,这更多是一种阻碍而不是帮助。查询json
列有点混乱,Laravel还没有真正支持,它们带来的任何好处都很快被其他问题所取代,等等。雄辩的模型/关系系统在查询/返回具有一对多或多对多关系的结果时,还可以奇迹般地降低复杂性。最后,由你决定。正如乌伊尔多和布莱恩·格拉兹所说