【发布时间】:2019-04-22 08:38:38
【问题描述】:
出于学习 Laravel 的原因,我目前正在创建一个文件共享系统。目前可以上传文件,然后再下载它们。现在我想扩展它,使多个(但不是所有人)可以下载一个文件。
目前我有一个用户表,并且在文件表中引用了用户 ID。这样我就知道哪个文件属于哪个用户。
文件表看起来有点像这样:
id | filename | user_id |
1 | doc.php | 2 |
2 | fly.php | 4 |
3 | dog.jpg | 3 |
4 | cat.gif | 2 |
等等...这样我就可以检查 user_id 是否与经过身份验证和登录的用户相同。
问题是我无法弄清楚如何让多个用户 (10-20) 可以访问一个文件。 我是否只是创建一个如下所示的新表:?
user_id | file_id_1 | file_id_2 |
1 | 3 | 6 |
并且每次将附加文件分配给用户时,都会创建一个新列?
对我来说,这似乎是非常糟糕的数据示意图。
【问题讨论】:
-
您需要有一个
files_users表,其中包含file_id和user_id列。查找file_id与特定文件匹配的所有行以获取可以访问它的列表。查找user_id与特定用户匹配的所有行,以获取他们可以看到的文件列表。这被称为“多对多”关系,你会在 Laravel 中经常遇到它。 -
非常感谢格雷格。我会调查的。
标签: php database laravel database-design phpmyadmin