新手入门:使用在线命令生成关联模型

superzhang 3月前 775

注意点:
1.先把要被关联的分表一键CRUD,再把主表一键CRUD
2.被关联的表格中需要有键名为name的字段,因为采用_id(_ids)生成关联模型时会自动查询显示name字段的值

BUG反馈
【一键生成CRUD】中,同时勾选“关联模型”和“生成菜单”,选择对应表格后执行提示执行成功,但实际只完成了CRUD生成,并未生成菜单,需自行使用命令行生成菜单。
版本:V1.0.0.20180806_beta

step:(举例)
1.设计数据库表格
表格1:人员花名册表

--
-- 表的结构 `fa_person`人员花名册  
-- 
--

DROP TABLE IF EXISTS `fa_person`;
CREATE TABLE IF NOT EXISTS `fa_person` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `admin_id` int(10) NOT NULL DEFAULT '0' COMMENT '管理员ID',
  `category_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '所属单位(单选)',
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '姓名',
  `locate_id` varchar(100) NOT NULL COMMENT '居住地点(单选)',
  `skill_ids` varchar(100) NOT NULL COMMENT '专业(多选)',
  `createtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updatetime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',
  `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重',
  `switch` tinyint(1) NOT NULL DEFAULT '0' COMMENT '开关',
  `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态',
  `state` enum('0','1','2') NOT NULL DEFAULT '1' COMMENT '状态值:0=禁用,1=正常,2=推荐',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='人员花名册表' ROW_FORMAT=COMPACT;

表格2:居住地点表

DROP TABLE IF EXISTS `fa_locate`;
CREATE TABLE IF NOT EXISTS `fa_locate` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `admin_id` int(10) NOT NULL DEFAULT '0' COMMENT '管理员ID',
  `name` varchar(100) NOT NULL DEFAULT '' COMMENT '居住地点',
  `refreshtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '刷新时间(int)',
  `createtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updatetime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',
  `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重',
  `switch` tinyint(1) NOT NULL DEFAULT '0' COMMENT '开关',
  `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态',
  `state` enum('0','1','2') NOT NULL DEFAULT '1' COMMENT '状态值:0=禁用,1=正常,2=推荐',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='居住地点表' ROW_FORMAT=COMPACT;

表格3

DROP TABLE IF EXISTS `fa_skill`;
CREATE TABLE IF NOT EXISTS `fa_skill` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `admin_id` int(10) NOT NULL DEFAULT '0' COMMENT '管理员ID',
  `name` varchar(100) NOT NULL DEFAULT '' COMMENT '专业',
  `refreshtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '刷新时间(int)',
  `createtime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updatetime` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',
  `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重',
  `switch` tinyint(1) NOT NULL DEFAULT '0' COMMENT '开关',
  `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态',
  `state` enum('0','1','2') NOT NULL DEFAULT '1' COMMENT '状态值:0=禁用,1=正常,2=推荐',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='专业表' ROW_FORMAT=COMPACT

2.使用在线命令一键CRUD生成被关联的分表
生成fa_locate fa_skill表格
3.使用在线命令一键CRUD生成关联模型
主表:fa_person
关联表:fa_locate(单选) fa_skill(多选)
4.使用命令行生成菜单
1.png

最后于 3月前 被superzhang编辑
最新回复 (7)
  • xpwsgg 3月前
    感谢TA
    0 引用 2

    总算知道咋关联了 真是太感谢了!

  • yeff 3月前
    感谢TA
    0 引用 3

    刚刚接触,没太看懂,能不能把命令贴出来啊。

  • allen 3月前
    感谢TA
    0 引用 4

    php think crud --table=fa_person --relation=fa_locate --relationmode=belongsto --relationforeignkey=locate_id --relationprimarykey=id --relation=fa_skill --relationmode=belongsto --relationforeignkey=skill_ids --relationprimarykey=id

    php think menu --controller=Skill --controller=Person --controller=Locate

  • zhyoli 3月前
    感谢TA
    0 引用 5

    楼主QQ号多少,可以交流一下吗?

  • 稻草人 2月前
    感谢TA
    0 引用 6

    按照这个说明操作,还是关联不上,楼主有QQ吗

  • taoge1992 2月前
    感谢TA
    0 引用 7

    一定是先生成分表,再生成主表?

  • 112990 1月前
    感谢TA
    0 引用 8

    按照楼主的方法,成功关联上了,新手入门必修技能!

  • 未登录
    9
返回