背景

以下内容基于thinkphp5.1框架和phpstrom编辑器进行说明
php web项目业务开发中绝大部分都是使用MVC结构的框架,在添加和更新数据时基本都支持实例化模型对象后赋值并保存。比如:

$user           = new User;
$user->name     = 'test';
$user->email    = 'test@qq.com';
$user->save();

其中nameemail都对应user表的字段。这里编辑器不知道User表的表字段也就无法自动提示,意味着你要记住表的字段或者一边看表一边进行开发。

模型字段注释

针对上面的情况可以在User模型类中添加user表的字段注释来实现自动提示,开发时只需要记得字段大概的名称或者去User模型类中看注释即可知道表的结构。

<?php

namespace app\user\model;

use think\Model;

/**
 * Class User
 * @property int member_id 主键
 * @property varchar name 会员名称
 * @property varchar email 邮箱
 * @property varchar member_role 用户角色
 * @property char passwd 密码
 * @property int add_time 添加时间
 * @property int update_time 最后一次修改时间
 * @package app\user\model
 * @author jianghongjie
 */
class User extends Model
{
    // 定义主键
    protected $pk = 'member_id';
    //开启自动时间戳
    protected $autoWriteTimestamp = true;
    // 创建时间
    protected $createTime = 'add_time';
    // 更新时间
    protected $updateTime = 'update_time';
}

快速生成模型字段注释

当表的字段很多或者表很多时写注释也很费时间和精力,使用下面的sql可以快速生成一个表的模型字段注释

SELECT
    CONCAT(
        " * @property ",
        DATA_TYPE,
        " ",
        COLUMN_NAME
    ),
--  COLUMN_NAME 列名,
    COLUMN_COMMENT 备注
--  COLUMN_TYPE 数据类型,
-- --   DATA_TYPE 字段类型,
--  CHARACTER_MAXIMUM_LENGTH 长度,
--  IS_NULLABLE 是否为空,
--  COLUMN_DEFAULT 默认值
FROM
    INFORMATION_SCHEMA. COLUMNS
WHERE
    -- developerclub为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
    table_schema = 'developerclub'
AND -- user为表名,到时候换成你要导出的表的名称
-- 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了,所以还是建议写上要导出的名名称
table_name = 'user'

将查询结果全部复制出来粘贴到模型字段注释中即可

参考文章