gpt4 book ai didi

php - Laravel-5 每个日志表的独立模型

转载 作者:可可西里 更新时间:2023-11-01 07:07:02 27 4
gpt4 key购买 nike

我目前正在使用 Laravel 5 开发应用程序,我的主要表格是userssuppliersmanufacturers等等

这些表中的每一个都有一个单独的users_logsuppliers_log 日志表。这些日志表的目的是审查为单个实体执行的操作(例如:属于特定制造商的日志以及过去对该制造商所做的更改等)

我计划使用 Eloquent 并且我已经为每个主要表生成了一个 Eloquent model

我的问题:我应该为每个日志表生成单独的 Eloquent 模型,还是只在主表的模型来写我的日志。

附注:使用我的应用程序的用户数量很少,因此将日志写入数据库优先于文件日志。

最佳答案

我只会使用logs 表,因为日志应该是简单/通用/直截了当的东西。

这些是我将使用的logs 表列:

  • 编号
  • user_id(执行我们正在记录的操作的用户)
  • 操作(执行操作的描述:删除用户更新供应商创建制造商等)
  • url(用于执行操作的 URL)
  • ip(用户的IP地址)
  • 时间戳

考虑到这一点,您将为每个可记录的表类型都有一个标准的数据透视表,在您的情况下是 log_manufacturerlog_supplierlog_user (我在这里遵循 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这样在每个 createdupdateddeleted 操作中,它都会透明地处理创建。

关于php - Laravel-5 每个日志表的独立模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com