0x001.StartAdmin简介0x002.项目初始化0x003.文件目录说明0x004.设计思维0x005.代码生成0x006.编写业务逻辑0x007.控制器中的变量值和方法说明
0x006.编写业务逻辑

一、代码生成

生成代码后访问对应的页面,即可显示简单的增删改查,这里我们示例如何编写自己的逻辑,比如学生姓名不允许修改。

我们需要复制BaseController中的update方法:

<?php

namespace app\api\controller;

use think\App;
use app\api\BaseController;
use app\model\Student as StudentModel;

class Student extends BaseController
{
    public function __construct(App $app)
    {
        parent::__construct($app);
        //筛选字段
        $this->searchFilter = [
            "student_id" => "=", //相同筛选
            "student_name" => "like", //相似筛选 模糊查询
        ];
        // 可以被添加数据的字段
        $this->insertFields = [
            "student_name", "student_sex", "student_age"
        ];
        // 可以被修改数据的字段
        $this->updateFields = [
            "student_name", "student_sex", "student_age"
        ];
        // 添加时的必填项
        $this->insertRequire = [
            'student_name' => "姓名必须填写"
        ];
        // 修改时的必填项
        $this->updateRequire = [
            'student_name' => "姓名必须填写"
        ];
        // 为父类传入通用简单操作的Model
        $this->model = new StudentModel();
    }
    public function update()
    {
        $error = $this->access();
        if ($error) {
            return $error;
        }
        if (!$this->pk_value) {
            return jerr($this->pk . "参数必须填写");
        }
        $item = $this->model->where($this->pk,$this->pk_value)->find();
        if (empty($item)) {
            return jerr("数据查询失败");
        }
        foreach ($this->updateRequire as $k => $v) {
            if (!input($k)) {
                return jerr($v);
            }
        }
        $data = [];
        foreach (input('post.') as $k => $v) {
            if (in_array($k, $this->updateFields)) {
                $data[$k] = $v;
            }
        }
        //这里我们写两种业务逻辑 第一种 不允许修改且提示给前端
        if($item['student_name'] != $data['student_name']){
            return jerr('学生姓名无法修改!');
        }
        //第二种 直接unset掉不允许修改的值
        unset($data['student_name']);
        //第三种 最简单的办法 利用声明的 updateFields 属性,删掉可被修改的字段即可自动完成

        $data[$this->table . "_updatetime"] = time();
        $this->model->where($this->pk, $this->pk_value)->update($data);
        return jok('修改成功');
    }
}

相信看到这里,你已经差不多理解这个代码生成器快速高效的使用办法了,下一章我们讲解 控制器中的变量值和方法说明