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的语法,都是使用一些封装好的类

一、创建模型

  1. 在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();
    }
}

模型类名已经指明了数据库,所以不用绑定数据库操作了


总结

模型就是把一个功能实现的所有代码写在一个模型类中

猜你喜欢

转载自blog.csdn.net/qq_53568983/article/details/128380216