我在控制器中使用isDirty()
方法来检查是否更改了任何字段。然后,我将字段的旧数据和新数据保存在table
中。代码工作正常;但是,我怎么optimize
这段代码?
通过使用下面的代码,我将不得不一次又一次地写每个字段名称。如果request->all()
有20个字段,但是我想检查六个字段是否被修改,如何在下面的代码中仅传递6 fields
而不重复?
控制器
if ($teacher->isDirty('field1')) {
$new_data = $teacher->field1;
$old_data = $teacher->getOriginal('field1');
DB::table('teacher_logs')->insert(
[
'user_id' => $user->id,
'teacher_id' => $teacher->id,
'old_value' => $old_data,
'new_value' => $new_data,
'column_changed' => "First Name",
]);
}
答案 0 :(得分:1)
您可以设置要检查的字段的列表,然后可以遍历脏字段并构建插入记录。
fetch(url)
.then(res => res.text())
.then(text => JSON.parse(text.slice(1)))
.then(json => console.log(json.pageItems))
答案 1 :(得分:0)
在通过lagbox在注释中获得想法之后,我尝试了以下代码,并且找到了解决问题的方法。
$dirty = $teacher->getDirty('field1','field2','field3');
foreach ($dirty as $field => $newdata)
{
$olddata = $teacher->getOriginal($field);
if ($olddata != $newdata)
{
DB::table('teacher_logs')->insert(
['user_id' => $user->id,
'teacher_id' => $teacher->id,
'old_value' => $olddata,
'new_value' => $newdata,
'column_changed' => "changed",
]);
}
}