Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-5每个对数表的单独模型_Php_Mysql_Eloquent_Laravel 5 - Fatal编程技术网

Php Laravel-5每个对数表的单独模型

Php Laravel-5每个对数表的单独模型,php,mysql,eloquent,laravel-5,Php,Mysql,Eloquent,Laravel 5,我目前正在用Laravel 5开发一个应用程序,我的主要表格是用户,供应商,制造商等 每个表都有一个单独的用户日志,供应商日志日志表。这些日志表的目的是审查为单个实体执行的操作(例如:属于特定制造商的日志以及过去对该制造商所做的更改等) 我计划使用Eloquent,并为每个主要表格生成了Eloquent模型 我的问题:我应该为每个日志表生成单独的雄辩的模型,还是在主表的模型中编写一个类似user\u log()的方法来编写日志 p.S:使用我的应用程序的用户数量很少,因此将日志写入数据库比文件日

我目前正在用
Laravel 5
开发一个应用程序,我的主要表格是
用户
供应商
制造商

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

我计划使用
Eloquent
,并为每个主要表格生成了
Eloquent
模型

我的问题:我应该为每个日志表生成单独的
雄辩的
模型,还是在主表的模型中编写一个类似
user\u log()
的方法来编写日志


p.S:使用我的应用程序的用户数量很少,因此将日志写入数据库比文件日志更可取。

我只使用
日志
表,因为日志应该是简单/通用/直接的

以下是我将使用的
日志
表列:

  • 身份证
  • 用户id(执行我们正在记录的操作的用户)
  • 操作(所执行操作的描述:
    删除的用户
    更新的供应商
    创建的制造商
    ,等等)
  • url(用于执行操作的url)
  • ip(用户的ip地址)
  • 时间戳
考虑到这一点,您将为每种可记录表类型创建一个标准透视表,在您的情况下,这些透视表将是
log\u制造商
log\u供应商
log\u用户
(我在这里遵循Laravel表命名约定,但如果您愿意,请继续使用其他名称)

通过这种方式,您可以通过任何类型的日志进行全局搜索:

$logs = Log::where('user_id', 1)->get(); // get all logs of User 1
按特定日志类型(用户、供应商、制造商等):

或者通过
日志过滤所有特定型号:

$manufacturers = Manufacturer::whereHas('logs', function ($query)
{
    $query->where('user_id', 1);
})
->get(); // get all Manufacturers that have been manipulated by User 1

为了在
日志
表上创建一个新条目,我将使用,以便在每次
创建
更新
删除
操作中,它都会透明地处理创建。

您的问题不清楚。你能解释一下吗?我不确定这里有一个“正确”的答案。我们最希望的是找到一种比另一种更适合您的情况的方法,但这两种方法都是可以接受的。结果将是一个固执己见的答案,这对于StackOverflow来说通常是离题的。@Nomanurehman:我为不清楚而道歉。我的问题是,我应该为
user\u log
表创建一个新的
eloquent模型
,还是只使用
user
模型并编写一个函数来执行日志操作。@GeorgeCummins:所以我只编写一个类似
saveLog()的方法
并使用一些
DB::
来编写我的日志,因为这比创建一个新的有说服力的模型更容易执行。您还可以在主要模型和日志模型之间使用a。是的,这可能是另一种方法:)
$manufacturers = Manufacturer::whereHas('logs', function ($query)
{
    $query->where('user_id', 1);
})
->get(); // get all Manufacturers that have been manipulated by User 1