背景
以下内容基于thinkphp5.1框架和phpstrom编辑器进行说明
php web项目业务开发中绝大部分都是使用MVC结构的框架,在添加和更新数据时基本都支持实例化模型对象后赋值并保存。比如:
$user = new User;
$user->name = 'test';
$user->email = 'test@qq.com';
$user->save();
其中name
和email
都对应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'
将查询结果全部复制出来粘贴到模型字段注释中即可