一、建立数据库表

1.依据E-R图,建立数据表

外键: https://www.cnblogs.com/chenxiaohei/p/6909318.html

2.执行以下sql语句完成建表过程。

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
--  Table structure for `yunzhi_klass`
-- ----------------------------
DROP TABLE IF EXISTS `yunzhi_klass`;
CREATE TABLE `yunzhi_klass` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(40) NOT NULL DEFAULT '' COMMENT '名称',`teacher_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '教师ID',`create_time` int(11) NOT NULL DEFAULT '0',`update_time` int(11) NOT NULL DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;-- ----------------------------
--  Records of `yunzhi_klass`
-- ----------------------------
BEGIN;
INSERT INTO `yunzhi_klass` VALUES ('1', '实验1班', '1', '0', '0'), ('2', '实验2班', '2', '0', '0'), ('3', '实验3班', '1', '0', '0'), ('4', '实验4班', '2', '0', '0');
COMMIT;SET FOREIGN_KEY_CHECKS = 1;

数据表的结构如下:

的确,当我们使用navicat来查看数据表时,我们发现,不但建立了数据表,而且还在该数据表中添加了四条数据。

二、班级模块

1. 建立班级模型

建tp5\application\common\model\Klass.php

<?php
namespace app\common\model;
use think\Model;/*** 班级模型*/
class Klass extends Model
{/*** 根据ID获取Teacher对象* 主要用于V层显示教师名字*/public function getTeacher(){$teacherId=$this->getData('teacher_id');$Teacher=Teacher::get($teacherId);return $Teacher;}
}

2.控制层

新建:tp5\application\index\controller\klassController.php

<?php
namespace app\index\controller;
use app\common\model\Klass;class KlassController extends IndexController
{public function index(){$klasses=Klass::paginate(); //分页:默认15条$this->assign('klasses',$klasses); //数据注册到V层return $this->fetch(); //返回到v层}}

3.V层

新建:tp5\application\index\view\Klass\index.html

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><title>班级管理</title><!-- <link rel="stylesheet" type="text/css" href="/thinkphp5/public/static/bootstrap-3.3.5-dist/css/bootstrap.min.css"> --><!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head><body class="container"><div class="row"><div class="col-md-12"><hr /><div class="row"><div class="col-md-8"><form class="form-inline"><div class="form-group"><label class="sr-only" for="name">名称</label><input name="name" type="text" class="form-control" placeholder="名称..." value="{:input('get.name')}"></div><button type="submit" class="btn btn-default"><i class="glyphicon glyphicon-search"></i>&nbsp;查询</button></form></div><div class="col-md-4 text-right"><a href="{:url('add')}" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i>&nbsp;增加</a></div></div><hr /><table class="table table-hover table-bordered"><tr class="info"><th>序号</th><th>名称</th><th>辅导员</th><th>操作</th></tr>{volist name='klasses' id='klass' key='key' }<tr><td>{$key}</td><td>{$klass->getData('name')}</td><!--根据ID获取对应的教师名字--><td>{$klass->getTeacher()->getData('name')}</td><td><a class="btn btn-danger btn-sm" href="{:url('delete?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-trash"></i>&nbsp;删除</a>&nbsp;<a class="btn btn-sm btn-primary" href="{:url('edit?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-pencil"></i>&nbsp;编辑</a></td></tr>{/volist}</table>{$klasses->render()}</div></div>
</body></html>

效果:http://tp5/index.php/index/klass/

4.分页配置

如果在数据表中添加足够多的数据,相信你会发现,如果我们不向paginate()中传入任何参数,那么每页将固定返回15条数据。产生的原因当然也很简单:默认值。

config.php中对分页配置设置了默认值,当然了,config.php中有200多行代码,近100项配置参数,如果有时间,推荐我们多浏览几遍。

统计修改每页返回数据条数
config.php

...//分页配置'paginate'=> ['type' => 'bootstrap','var_page'  => 'page','list_rows' => 5,    // 修改分页显示5条数据],
...

5.多次调用,一次运算

假设我们除了要查看辅导员姓名外,还想查看辅导员的ID。那么V层(index.html)应该进行如下改写。

...<td>{$key}</td><td>{$klass->getData('name')}</td><td>{$klass->getTeacher()->getData('name')}{$klass->getTeacher()->getData('id')}</td><td><a class="btn btn-danger btn-sm" href="{:url('delete?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-trash"></i>&nbsp;删除</a>&nbsp;<a class="btn btn-sm btn-primary" href="{:url('edit?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-pencil"></i>&nbsp;编辑</a></td>
...

6.重构及优化

<?php
namespace app\common\model;
use think\Model;/*** 班级模型*/
class Klass extends Model
{private $Teacher;/*** 根据ID获取Teacher对象* 主要用于V层显示教师名字*/public function getTeacher(){/只有Teacher对象不存在时才去根据Id查询对象,这样可以避免多次查询,浪费资源if(is_null($this->Teacher)){          $teacherId=$this->getData('teacher_id');$this->Teacher=Teacher::get($teacherId);}/若有对象则直接返回return $this->Teacher;}
}

ThinkPHP(十三)班级管理:建立数据库表,数据列表index相关推荐

  1. 用rose建立数据库表

    用rose建立数据库表 2009年5月3日 用rose建立数据库表 1 引言 Rational Rose 是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio和 C+ ...

  2. 导出远程mysql数据库中的表_shell脚本实现导出远程mysql数据库表数据至本地

    bin/main.sh脚本内容 #!/bin/bash #作用:用于同步远程mysql数据库表数据至本地 #作者:丁艺博 source /etc/profile source ~/.bash_prof ...

  3. python提取数据库数据_Python如何读取MySQL数据库表数据

    本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 ...

  4. mysql数据库实验查询_MySQL数据库表数据的查询操作实验

    实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...

  5. MySQL快速比较数据库表数据

    1. 前言 有时需要比较MySQL不同数据库间结构相同的表数据是否相同,例如在测试环境与生产环境之间比较,或多个测试环境之间比较,以下提供一种通用的快速比较方式. 2. 比较方法 对于需要比较数据的数 ...

  6. 读取ACCESS数据库表数据

    Sub 读取数据库表数据()Dim cnn As New Connection, rs As New RecordsetDim strSql As String, i As Long, Sh As W ...

  7. 帆软报表列表_帆软报表(finereport)读取数据库表数据生成报表

    帆软报表(finereport)读取数据库表数据生成报表 发布时间:2019-01-14 16:48, 浏览次数:856 , 标签: finereport 1.首先是安装帆软报表软件,微软的傻瓜式安装 ...

  8. sql server 触发器实时同步数据库表数据

    sql server 触发器实时同步数据库表数据 创建两个相同结构的数据库表 CREATE TABLE [dbo].[Table_1]([id] [varchar](50) NOT NULL,[nam ...

  9. 达梦数据库表数据或者物理文件误删除或者损坏恢复方法

    一.数据库表数据误删除 情况一:之前没有做备份或者忘记做备份了,这种情况下不能恢复误删除的数据 情况二:做了备份并且也配置了归档,这种情况下可以通过备份文件恢复+还原归档日志的方式恢复到指定时间点 模 ...

最新文章

  1. java 汉字转拼音_推荐一款前端汉字转拼音组件工具
  2. Windows Phone 7 不温不火学习之《项目模板》
  3. 交换机配置软件_如何配置远程登陆交换机?最简单的解释方式,一看就懂
  4. 【代码】使用reentrantlock必须要手动释放锁
  5. ubuntu mv和cp命令
  6. mongodb数组更新操作符$addToSet
  7. 为什么年轻一代 连操作系统的基本知识 都不懂?
  8. 秒传 php,网站图片上传可以实现秒传功能吗?
  9. mysql系统属性,mysql
  10. 正宗PC Unix实验环境
  11. 让MacOS废纸篓中超过30 天的文件自动清除
  12. 富士康对夏普收购报价大幅缩水20多亿美元
  13. SQL Server 2016下载及安装教程
  14. 电话机器人图文+源码介绍
  15. 1.1 ubuntu环境下搭建gd32vf103
  16. 人脸识别技术应用场景与前景
  17. 耗时86小时的「百变小樱」最强数据可视化作品!
  18. gopher攻击mysql_从一道CTF题目看Gopher攻击MySql
  19. bootstrap案例
  20. 微信发放红包接口(java)

热门文章

  1. 圆通开放平台电子面单下单接口,适用于第三方系统对接
  2. A2DP:蓝牙耳机回连失败(播放音乐过程中,打开之前已配对的蓝牙耳机进行回连,耳机与测试机的媒体音频连接失败)
  3. IntelliJ IDEA 常用设置(配置)吐血整理。首次安装必需
  4. plus初始化原理及plus is not defined,mui is not defined 汇总
  5. 雪花飘html动画,用纯CSS3的animation制作雪花飘落、星星闪烁、按钮缩放、图片倾斜...
  6. linux绑定arp mac静态,arp 静态绑定Mac地址
  7. 在多线程中输出时间戳是否会重复
  8. 苹果“软”了,更好卖 | WWDC 2018
  9. 【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 32页和40页论文及实现代码
  10. centos升级软件