出于学习原因,我目前正在Laravel中创建文件共享系统。当前可以上传文件,然后再下载。现在,我想以一种可以让多个(但不是全部)人下载一个文件的方式扩展它。
当前,我有一个用户表,并且在文件表中引用了该用户ID。这样我就知道哪个文件属于哪个用户。
文件Table看起来像这样:
id | filename | user_id |
1 | doc.php | 2 |
2 | fly.php | 4 |
3 | dog.jpg | 3 |
4 | cat.gif | 2 |
以此类推...这样,我可以只检查user_id是否与Authenticated and登录的User相同。
问题是我无法弄清楚如何使一个文件可供多个用户访问(10-20)。 我是否只创建了一个新的表格,看起来像这样:?
user_id | file_id_1 | file_id_2 |
1 | 3 | 6 |
每次向用户分配其他文件时,都会创建一个新列吗?
在我看来,这似乎是非常糟糕的数据示意图。
答案 0 :(得分:1)
K
@Greg已经发表评论,您最好使用数据透视表将文件和用户彼此链接。
这将允许您使用hasManyThrough关系来获取用户可访问的所有文件以及有权访问文件的所有用户
https://laravel.com/docs/5.7/eloquent-relationships#has-many-through