ThinkPHP模型操作上
- 前言
- 模型
- 一、创建模型
- 二、模型操作
- 总结
前言
在mvc架构中,模型的解释是写逻辑代码的地方,其实还可以这样理解,就是一串操作写在一个模型类中,就是
你要完成某一项功能,将这个功能的代码写在一个model中,然后使用这个model类就可以了
模型
使用模型前的准备
- 添加数据表如下所示:
CREATE TABLE `shop_admin` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`account` varchar(50) NOT NULL COMMENT '账户',
`password` char(32) NOT NULL COMMENT '密码',
`name` varchar(50) NOT NULL COMMENT '姓名',
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',
`add_time` int(10) unsigned NOT NULL COMMENT '添加时间',
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='后台管理员';
INSERT INTO `shop_admin` VALUES (1, 'ouyangke', 'e10adc3949ba59abbe56e057f20f883e', 'asd', 1, 1576080000);
DROP TABLE IF EXISTS `shop_cat`;
CREATE TABLE `shop_cat` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(50) NOT NULL COMMENT '分类名',
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分类表';
INSERT INTO `shop_cat` VALUES (1, '女装', 1);
INSERT INTO `shop_cat` VALUES (2, '男装', 1);
INSERT INTO `shop_cat` VALUES (3, '孕产', 1);
INSERT INTO `shop_cat` VALUES (4, '童装', 1);
INSERT INTO `shop_cat` VALUES (5, '电视', 1);
INSERT INTO `shop_cat` VALUES (6, '手机', 1);
INSERT INTO `shop_cat` VALUES (7, '电脑', 1);
CREATE TABLE `shop_goods` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ' 商品ID',
`cat` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '分类ID',
`title` varchar(200) NOT NULL COMMENT '商品标题',
`price` double(10,2) unsigned NOT NULL COMMENT '价格',
`discount` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '折扣',
`stock` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '库存',
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭 3删除',
`add_time` int(10) unsigned NOT NULL COMMENT '添加时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
INSERT INTO `shop_goods` VALUES (1, 1, '云朵般轻盈的仙女裙 高级钉珠收腰长裙 气质无袖连衣裙', 279.99, 0, 1100, 1, 1576080000);
INSERT INTO `shop_goods` VALUES (2, 1, '高冷御姐风灯芯绒a字连衣裙女秋冬2019年新款收腰显瘦复古裙子', 255.90, 0, 100, 1, 1576080000);
-
表前缀设置:
config/database.php 文件里 prefix
-
请确保你已经在数据库配置文件中配置了数据库连接信息
-
模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写
-
模型自动对应的数据表名称都是遵循小写+下划线规范,如果你的表名有大写的情况,必须通过设置模型的table属性。
-
在模型类中添加
use think\model;
TP6的语法,都是使用一些封装好的类
一、创建模型
- 在app目录下面创建model目录,如何在model目录下面创建三个文件夹
- Cat.php
<?php
namespace app\model;
use think\model;
class Cat extends model
{
}
- Goods.php
<?php
namespace app\model;
use think\model;
class Goods extends model
{
}
- Admin.php
<?php
namespace app\model;
use think\model;
class Admin extends model
{
}
二、模型操作
在模型中除了可以调用数据库类的方法之外(换句话说,数据库的所有查询构造器方法模型中都可以支持),可以定义自己的方法,所以也可以把模型看成是数据库的增强版
-
模型文件里的自定义方法,不要和 thinkphp 方法一样名称
-
模型里的 Goods:: 也可以用 static:: 关键词
-
链式操作,都可以在模型里使用
-
在模型中使用数据库操作,在controler中调用
-
app/model/Cat.php
<?php
namespace app\model;
use think\model;
class Cat extends model
{
public function findArr()
{
$result = Cat::select();
return $result;
}
}
- app/controller/index.php
<?php
namespace app\controller;
use think\facade\View;
use think\facade\Db;
use app\model\Cat;
class Index
{
public function index()
{
$menu = new Cat();
echo $menu->findArr();
}
}
模型类名已经指明了数据库,所以不用绑定数据库操作了
总结
模型就是把一个功能实现的所有代码写在一个模型类中