老莫的笔记本  
  
请选择 进入手机版 | 继续访问电脑版
查看: 1028|回复: 0

TP5 模型的创建与使用

[复制链接]

662

主题

878

帖子

5115

积分

超级版主

Rank: 8Rank: 8

积分
5115
发表于 2018-8-12 22:50:38 | 显示全部楼层 |阅读模式
一、模型与数据表的区别与联系
区别:分工不同---- Db类负责数据表的访问;
                       ---- 模型专注于业务逻辑的处理;
         返回值不同---- DB访问返回的是数组;
                          ---- 模型访问返回的是一个对象;
联系————模型最终仍需调用 Db 类 完成数据表的查询操作

二、如何创建模型?
1. 手工创建:在应用或模块下创建模型目录model,并在该目录下创建与数据表同名的类文件:如User.php 对应user.dbf表
2. 命令行创建: 在当前项目目录下,用命令:php think make:model 模块名/模型名,会自动创建指定位置和命名空的空模型,并自动与数据表绑定。
3. 【须知】模型创建完后,会自动获取当前数据表名称$table, 表中所有字段信息 $field,主键$pk和数据库配置信息$connection. 同时会自动继承基类Model中所有属性和方法,protected类型在本模型中使用,public 类型还可以在控制器中使用,静态方法大多直接用在控制器,进行CURD操作。

三、如何在控制器中调用模型?
1. 实例化调用:
    1.1 用new 生成模型对象;
    1.2 用模型对象处理相关业务;

2. 静态调用:
    2.1 通过静态查询直接将一个空模型转成数据模型;
    2.2 再调用相关方法完成增删改查操作;

3.不推荐使用助手函数model() 和添加模型类后缀


四、模型数据访问方式
1. 控制器访问(外部)----用模型对象model
2. 模型访问(内部)---- 用伪变量$this

哈哈哈  愉快的贴代码了:
articles/model/Staff.php
  1. <?php
  2. namespace app\articles\model;
  3. use think\Model;
  4. class Staff extends Model
  5. {
  6.     // 模型创建完成 文件名=类名=数据表名
  7.       
  8.    
  9.     // 这属于内容访问
  10.     public function rname()
  11.     {
  12.         return $this->getData('name');
  13.     }
  14.    
  15. }
复制代码

articles/controller/Dbn.php
  1. <?php
  2. namespace app\articles\controller;
  3. use app\articles\model\Staff;  //先引入 staff 类;
  4. header("Content-type: text/html; charset=utf-8");
  5. class Dbn
  6. {
  7.     public function mt1()
  8.     {
  9.         return '进来了mt1    }
  10.     // 第一种实例化调用
  11.     public function mt2()
  12.     {
  13.         $staff = new Staff();
  14.         //下面这句链式调用 其实是模型中的方法  返回的是一个对象 而不是一个数组 数据库中的数据存放在 data属性中
  15.         $lma = $staff->where('id',7)->find();
  16.        // dump($lma);  都打印出来了 太多了
  17.       
  18.        // 如果只想获取原始数据,可以使用getData()方法
  19.        dump($lma->getData());       // 也可以加参数 查看任意一个  getData('name');
  20.     }
  21.     // 这种是静态调用
  22.     public function mt3()
  23.     {
  24.         // dump(Staff::get(6));
  25.         dump(Staff::get(6)->getData());
  26.     }
  27.     // 在控制器中的访问模型对象属于外部访问 例如
  28.     // $lma = Staff::get(6)->getDate();        // 这就是外部访问 也叫控制器访问
  29.     // dump($lma);
  30.     public function mt4()
  31.     {
  32.         //  这是内部访问的第二步,调用我自己在 staff.php 中定义的自定义函数
  33.         $lma = Staff::get(7)->rname();
  34.         dump($lma);
  35.     }
  36. }
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表