我目前正在使用Laravel 5
开发一个应用程序,我的主要表格为users
,suppliers
,manufacturers
等。
这些表中的每一个都有一个单独的users_log
,suppliers_log
日志表。这些日志表的目的是审查为单个实体执行的操作(例如:属于特定制造商的日志以及过去为该制造商所做的更改等)。
我打算使用Eloquent
,并为每个主要表生成Eloquent
model
。
我的问题:我应该为每个日志表生成单独的Eloquent
模型,还是只在主表的模型中编写user_log()
之类的方法来编写我的问题日志中。
P.S :要使用我的应用程序的用户数量很少,因此将日志写入数据库优先于文件日志。
答案 0 :(得分:3)
我只会使用logs
表,因为日志应该是简单/通用/简单的。
这些是我将使用的logs
表格列:
deleted user
,updated supplier
,created manufacturer
等)考虑到这一点,您将为每个可记录的表类型设置一个标准数据透视表,在您的情况下,该表将是log_manufacturer
,log_supplier
和log_user
(我' m遵循Laravel表命名约定,但如果您愿意,请继续使用其他名称。
通过这种方式,您可以通过任何类型的日志进行全局搜索:
$logs = Log::where('user_id', 1)->get(); // get all logs of User 1
按特定日志类型(用户,供应商,制造商等):
$logs = Log::has('suppliers')
->where('user_id', 1)
->get(); // get Supplier logs created by User 1
或获取按Log
过滤的所有特定模型:
$manufacturers = Manufacturer::whereHas('logs', function ($query)
{
$query->where('user_id', 1);
})
->get(); // get all Manufacturers that have been manipulated by User 1
为了在logs
表格上创建新条目,我会使用Model Observers,以便在每个created
,updated
或deleted
行动它会透明地处理创作。