laravel admin form 保存回调

原创不易,请尊重作者转载说明出处,谢谢!

项目背景:框架laravel admin,功能模块模型表单
数据表:mysql
要做的事:对单表做增删改查,重点是当表单提交的时候,除了表单内容,还想更新进一些别的字段(程序计算出来的数据)

参考laravel-admin官网文档知识点:表单回调三种方法择需使用

因为官网只是蜻蜓点水提一下,刚开始看,一头雾水不知道回调怎么写。很多人说跟laravel的DB一样,还是不懂对不对?

我作了简单的整理,下面直接上我的代码例子。希望对你有帮助

例:表单提交有解决时间和新建时间字段(直接写入),但是耗时字段需要根据前两者进行计算

//控制器方法
 protected function form()
    {
        $form = new Form(new QuestionsModel);
        $form->display('id', 'ID');
        $form->datetime('solved_at', '解决时间')->format('YYYY-MM-DD HH:mm:ss');
        $form->display('created_at', '创建时间');
        $form->display('take_hour', '耗时');
        $form->saved(function (Form $form) {
            //回调我单独写了函数(model类)
            QuestionsModel::SaveTakeHour($form->model()->id);
        });
        return $form;
    }

//model类方法
   public static function SaveTakeHour($id)
    {
        $dateArr = DB::table('questions')->select('solved_at','created_at')->where('id',$id)->first();
        $solvedAt = strtotime($dateArr->solved_at);
        $createdAt = strtotime($dateArr->created_at);
        //解决时间 - 新建时间
        if(!empty($solvedAt) and ($solvedAt > $createdAt)){
            $time = $solvedAt-$createdAt;
            $date=floor(($time)/86400);
            $hour=floor(($time)%86400/3600);
            $takeHour =  $date.'天'.$hour.'时';
            DB::table('questions')->where('id',$id)->update(['take_hour' => $takeHour]);
        }
    }





版权声明:本文为xingxing_sun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。