原创不易,请尊重作者转载说明出处,谢谢!
项目背景:框架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版权协议,转载请附上原文出处链接和本声明。