如何在saving判断字段值是否发生改变?如何在saved()获取未修改前的数据?
1.我知道在saved()里,可以用$form->model()->getChanges(‘column’),判断字段值是否发生了改变,但在saving里不能用这个方法,尝试用$form->model()->>getDirty(‘column’)行不通,
目前用的方法是 $form->model()->column!=$form->column,想问下大家有没有更好的方法?
2.如何在form() ->saved()里获取未修改前的数据?
补充
时隔两年又发生了这个问题,然后发现自己当时的提问并不正确, 这里补充下
laravel-admin 版本 1.7.6
Laravel 版本 5.8
PHP 版本 7.3.1
win7
标题应是 如何在$form->saving()和$form->saved(),获取修改前的数据
1.在$form->saving()里
$form->saving(function($form){
//1.1获取某一个字段name修改前数据,如下,
$form->model()->name
//1.2获取所有修改了值的字段,目前还是没找方法
})
2.在$form->saved()里
//2.1获取某一个字段name修改前数据
$form->builder()->fields()[1]->original();//数字1表示该字段在$form->展示时的位置索引值,如下
$form->display('title', '标题');//对应$form->builder()->fields()里的索引0
$form->text('name','名称');//对应$form->builder()->fields()里的索引1
//2.2获取所有修改了值的字段,但不能找到修改前的值
$form->model()->getChanges();
3.我自己想到了一个笨方法,但有效
//3.1 获取当前模型id,假设当前控制器命名为NewsController
$id=request()->route()->parameters()['news']??0;
$news=News::find($id)->toArray();
$form->saved(function($form)use($news){
$changes=$form->model()->getChanges();
$before=array_intersect_key($news,$changes);//得到修改前数据
})
推荐文章: