模型简介
/*
Navicat MySQL Data Transfer

Source Server         : 127.0.0.1
Source Server Version : 50726
Source Host           : localhost:3306
Source Database       : tp6

Target Server Type    : MYSQL
Target Server Version : 50726
File Encoding         : 65001

Date: 2020-05-28 11:45:22
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
  `age` tinyint(3) unsigned NOT NULL,
  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '韦小宝', '35', 'wexiaobao@php.cn', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES ('2', '小龙女', '50', 'xln@php.cn', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES ('3', '过儿', '25', 'ge@php.cn', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES ('4', '郭大侠', '45', 'gj@php.cn', 'e10adc3949ba59abbe56e057f20f883e');

第1步:( app\index\model\User.php )新建model文件目录,并在其下方新建一个类文件User.php内容如下

<?php
namespace app\index\model;

use think\Model;

class User extends Model{

    protected $table = 'user';
    protected $pk = 'user_id';

}

第2步:( app\index\controller\ModelTest.php )在controller文件目录下,新建一个类文件 ModelTest .php内容如下

<?php
namespace app\index\controller;

use app\index\model\User;


class ModelTest{


    //模型对象  
    public function demo1()
    {

        //创建模型对象
        $user = new User();
        
        //查询一条数据
        $res = $user->db()->find(1);
        dump($res);

        //查询所有数据
        //$res = $user->db()->select();

        //测试打印输出对象方式 dump()/var_dump() 
        // var_dump 打印输出对象:var_dump($user);
        // dump($res);
        // dump(gettype($user));   
    }

    //依赖注入
    public function demo2(User $user)
    {

          $res = $user->db()->find(3);          
          //dump($res);
          var_dump($res);

          echo '<hr>';
          echo  $res['name'];

          echo '<br/>';
          echo  $res->name;

    }




    //1.新增操作:create():参数就是要新增的数据,返回当前模型对象

    public function insert()
    {
        $data = ['name'=> '乔峰','age'=>40,'email'=>'qiaofeng@php.cn','password'=>Md5('123')];  // 根据数据库字段设置,也可以用 sha1('123')

        $user = User::create($data);

        $insertId = $user['user_id'];

        return '新增成功,新增记录的主键ID是:'.$insertId;

    }



    //2.查询操作
    //在tp6中,删除了传统的get/all,直接用db()来调用Query类中的方法完成

    public function select(User $user)
    {
        //单条  查看对象:var_dump($user->db()); 
        echo '打印单条数据:';       
        $res1 = $user->db()->find(3);
        dump($res1);

        echo '<hr>';
        echo '打印全部数据:';   

        //all()  根据条件 where() 打印出年龄大于30的所有数据
        $res2 = $user->db()->where('age','>',30)->select();
        dump($res2);
    }



    //3.更新操作:update
    public function update()
    {
        $user = User::update(['age'=>50],['user_id'=>2]);       
        return '年龄已经被更新成:'.$user['age'];

    }


    // 4.删除操作:destroy():返回布尔值

    public function delete()
    {

      //删除user_id 等于 5的数据记录

      //删除方式1:静态方法方式
      //   $res = User::destroy(['user_id'=>5]);

      //删除方式2:闭包方式,根据条件,删除user_id 等于5的记录
      $res = User::destroy( function($query){
          $query->where('user_id',5);  //凡是使用静态方法的,都可以用闭包方式传递参数,例如:User::destroy和User::update
      });
      return $res ? '删除成功':'删除失败';

    }
}

运行结果截图

总结

模型基本操作一

创建模型类: 类名与数据库同名
实例化方式: 类方法中实例化,依赖注入(外部实例化)
常用操作: CURD(增删改查)
调用方式:
实例方法: 必须通过模型对象调用
静态方法: 直接用模型类调用(推荐)

模型基本操作二

查询:db()
新增:create()
更新: update()
删除: destory()

发表评论

邮箱地址不会被公开。