更改的字段数据在 Laravel 中不起作用
Field data changed is not working in Laravel
我正在尝试检查 Laravel 模型中的值是否更改,isDirty
永远不会执行。如果我删除 isDirty
数据更新工作正常,只有 ìsDirty
不工作。
public function update(TeacherRequest $request, $id)
{
$teacher = Teacher::find($id);
if ($teacher->isDirty($request)) {
$new_data = $teacher->$request;
$old_data = $teacher->getOriginal($request);
return response()->json([
'msg' => $new_data,
'msg' => $old_data
]);
}
if ($teacher->save()) {
$teacher->update($request->all();
}
}
我也尝试只检查 one column
是否已更改。
单列检查:
if ($teacher->isDirty('efirst')) {
$new_data = $teacher->efirst;
$old_data = $teacher->getOriginal('efirst');
return response()->json([
'msg' => $new_data,
'msg' => $old_data
]);
}
efirst
是第一列和输入字段的名称。
即使我更改了数据,我也没有得到任何输出。
这样不行。如果在模型本身上修改了字段,则模型的 isDirty()
将 return 为真。它需要一个可选参数,即 要检查的参数列表 ,而不是它们的新值。如果您在 Model::find()
之后检查 isDirty()
,它将始终 return false。
所以你需要反过来做:
- 查找模型
- 将请求中的新字段设置到它(不要保存!)
- 勾选
isDirty()
我正在尝试检查 Laravel 模型中的值是否更改,isDirty
永远不会执行。如果我删除 isDirty
数据更新工作正常,只有 ìsDirty
不工作。
public function update(TeacherRequest $request, $id)
{
$teacher = Teacher::find($id);
if ($teacher->isDirty($request)) {
$new_data = $teacher->$request;
$old_data = $teacher->getOriginal($request);
return response()->json([
'msg' => $new_data,
'msg' => $old_data
]);
}
if ($teacher->save()) {
$teacher->update($request->all();
}
}
我也尝试只检查 one column
是否已更改。
单列检查:
if ($teacher->isDirty('efirst')) {
$new_data = $teacher->efirst;
$old_data = $teacher->getOriginal('efirst');
return response()->json([
'msg' => $new_data,
'msg' => $old_data
]);
}
efirst
是第一列和输入字段的名称。
即使我更改了数据,我也没有得到任何输出。
这样不行。如果在模型本身上修改了字段,则模型的 isDirty()
将 return 为真。它需要一个可选参数,即 要检查的参数列表 ,而不是它们的新值。如果您在 Model::find()
之后检查 isDirty()
,它将始终 return false。
所以你需要反过来做:
- 查找模型
- 将请求中的新字段设置到它(不要保存!)
- 勾选
isDirty()