如何在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);//得到修改前数据
})
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
  • 未修改之前 $user->getOriginal('status')
  • 判断是否修改 $user->isDirty('status')
3年前 评论
讨论数量: 2
  • 未修改之前 $user->getOriginal('status')
  • 判断是否修改 $user->isDirty('status')
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!