gpt4 book ai didi

php - 如何在 PHP Laravel 5.x 中编辑后保存之前的 MySQL 字段条目?

转载 作者:行者123 更新时间:2023-11-29 16:09:56 24 4
gpt4 key购买 nike

我正在使用两个 MySQL 表。任务(具有完整的 MVC)和任务文件(只是一个 MySQL 表),两者具有相同的字段。唯一的区别是,从任务编辑后,我希望将预更新的信息存储在任务存档表中,并且任务将具有编辑后的条目,以避免更新覆盖。

我没有做 Eloquent ORM 关系,因为我不需要互相引用任何内容。我也没有为任务文件创建 Controller 或模型,因为我看不到这样做的任何目的,除非我需要它来解决我的问题。

//table fields for task and task archive tables
$table->increments('id');
$table->string('task_name');
$table->string('task_notes');
$table->string('task_status');
 public function edit($id) //from TasksController
{
$task = Task::find($id);
return view('tasks.edit')->with('task', $tasks);
}
public function update(Request $request, $id)
{
$this ->validate($request,[
'task_name' => 'required',
'task_notes' => 'required',
'task_status' => 'required',
]);
$task = Task::find(id);
$task->task_name=$request->input('task_name')
$task->task_notes=$request->input('task_notes')
$task->task_status=$request->input('task_status')
$task->save
------->insert code here on how to get the pre-updated information of task and save to task archive table
}

我只想将预更新的信息存储在不同的表中。

最佳答案

我建议创建一个名为 task_audit 的新表,然后附加触发器(INSERTUPDATEDELETE ) 到您的原始表来处理审核,而不是通过 PHP 执行此操作。 This文章很好地解释了触发器。

task 表将包含所有“当前”数据,task_audit 表基本上是发生更改时行的副本,理想情况下,您还可以附加名为 audit_action 的列,以便您可以区分发生的操作(INSERTUPDATEDELETE)。您可以将三个触发器(针对三个操作)附加到您的“主”表,以便它在审核表中记录更改的数据。

使用此方法,您可以轻松地从任何日期重建任务,因为您拥有所有存档数据,并且它也可用于报告。

关于php - 如何在 PHP Laravel 5.x 中编辑后保存之前的 MySQL 字段条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55357745/

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