ThinkPHP(十三)班级管理:建立数据库表,数据列表index
一、建立数据库表
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> 查询</button></form></div><div class="col-md-4 text-right"><a href="{:url('add')}" class="btn btn-primary"><i class="glyphicon glyphicon-plus"></i> 增加</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> 删除</a> <a class="btn btn-sm btn-primary" href="{:url('edit?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-pencil"></i> 编辑</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> 删除</a> <a class="btn btn-sm btn-primary" href="{:url('edit?id=' . $klass->getData('id'))}"><i class="glyphicon glyphicon-pencil"></i> 编辑</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相关推荐
- 用rose建立数据库表
用rose建立数据库表 2009年5月3日 用rose建立数据库表 1 引言 Rational Rose 是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio和 C+ ...
- 导出远程mysql数据库中的表_shell脚本实现导出远程mysql数据库表数据至本地
bin/main.sh脚本内容 #!/bin/bash #作用:用于同步远程mysql数据库表数据至本地 #作者:丁艺博 source /etc/profile source ~/.bash_prof ...
- python提取数据库数据_Python如何读取MySQL数据库表数据
本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 ...
- mysql数据库实验查询_MySQL数据库表数据的查询操作实验
实验3.MySQL数据库表数据的查询操作实验(1) 一.实验目的 掌握SELECT 语句的基本语法格式. 掌握SELECT 语句的执行方法. 掌握SELECT 语句的 GROUP BY 和 ORDER ...
- MySQL快速比较数据库表数据
1. 前言 有时需要比较MySQL不同数据库间结构相同的表数据是否相同,例如在测试环境与生产环境之间比较,或多个测试环境之间比较,以下提供一种通用的快速比较方式. 2. 比较方法 对于需要比较数据的数 ...
- 读取ACCESS数据库表数据
Sub 读取数据库表数据()Dim cnn As New Connection, rs As New RecordsetDim strSql As String, i As Long, Sh As W ...
- 帆软报表列表_帆软报表(finereport)读取数据库表数据生成报表
帆软报表(finereport)读取数据库表数据生成报表 发布时间:2019-01-14 16:48, 浏览次数:856 , 标签: finereport 1.首先是安装帆软报表软件,微软的傻瓜式安装 ...
- sql server 触发器实时同步数据库表数据
sql server 触发器实时同步数据库表数据 创建两个相同结构的数据库表 CREATE TABLE [dbo].[Table_1]([id] [varchar](50) NOT NULL,[nam ...
- 达梦数据库表数据或者物理文件误删除或者损坏恢复方法
一.数据库表数据误删除 情况一:之前没有做备份或者忘记做备份了,这种情况下不能恢复误删除的数据 情况二:做了备份并且也配置了归档,这种情况下可以通过备份文件恢复+还原归档日志的方式恢复到指定时间点 模 ...
最新文章
- java 汉字转拼音_推荐一款前端汉字转拼音组件工具
- Windows Phone 7 不温不火学习之《项目模板》
- 交换机配置软件_如何配置远程登陆交换机?最简单的解释方式,一看就懂
- 【代码】使用reentrantlock必须要手动释放锁
- ubuntu mv和cp命令
- mongodb数组更新操作符$addToSet
- 为什么年轻一代 连操作系统的基本知识 都不懂?
- 秒传 php,网站图片上传可以实现秒传功能吗?
- mysql系统属性,mysql
- 正宗PC Unix实验环境
- 让MacOS废纸篓中超过30 天的文件自动清除
- 富士康对夏普收购报价大幅缩水20多亿美元
- SQL Server 2016下载及安装教程
- 电话机器人图文+源码介绍
- 1.1 ubuntu环境下搭建gd32vf103
- 人脸识别技术应用场景与前景
- 耗时86小时的「百变小樱」最强数据可视化作品!
- gopher攻击mysql_从一道CTF题目看Gopher攻击MySql
- bootstrap案例
- 微信发放红包接口(java)
热门文章
- 圆通开放平台电子面单下单接口,适用于第三方系统对接
- A2DP:蓝牙耳机回连失败(播放音乐过程中,打开之前已配对的蓝牙耳机进行回连,耳机与测试机的媒体音频连接失败)
- IntelliJ IDEA 常用设置(配置)吐血整理。首次安装必需
- plus初始化原理及plus is not defined,mui is not defined 汇总
- 雪花飘html动画,用纯CSS3的animation制作雪花飘落、星星闪烁、按钮缩放、图片倾斜...
- linux绑定arp mac静态,arp 静态绑定Mac地址
- 在多线程中输出时间戳是否会重复
- 苹果“软”了,更好卖 | WWDC 2018
- 【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 32页和40页论文及实现代码
- centos升级软件