【发布时间】:2019-07-09 13:18:26
【问题描述】:
我有这个问题:一些用户 (user_id) 可以访问报告 (report_id),但任何报告只能在有限的时间内(以天,days_count 为单位)访问,但每个报告只能访问一定数量的尝试( report_count) 在 days_count 期间。
在一张表中,逻辑是这样的:
One Table
---------
id - user_id - report_id - report_count - days_count
1 - 5 - 1 - 5 - 7
2 - 5 - 2 - 3 - 7
3 - 3 - 1 - 4 - 10
第一行将被读作:“user_id 为 5 的用户,有权访问 report_id 1,他还有 5 次访问权限,还有 7 天的访问权限” 等等
我正在考虑制作 2 个这样的表:
Table 1
---------
id - user_id - report_id - report_count
1 - 5 - 1 - 5
2 - 5 - 2 - 3
3 - 3 - 1 - 4
Table 2
---------
id - user_id - days_count
1 - 5 - 7
2 - 2 - 10
使用 2 个表的逻辑,我如何使用 Laravel 关系来建立我的关系?
【问题讨论】:
-
在我看来,
days_count应该替换为包含用户无法访问报告的日期时间的日期时间列。如果没有created_at列(或类似列),您当前的数据库设计将无法工作,因为days_count不会每天更新自己。 -- 最好的设计可能是您的单表设计(我建议的更改)以及另一个记录用户访问报告的表(即用户何时访问哪个报告),因为它为您提供了最多的信息和允许您非常轻松地计算状态。