|
一、模型与数据表的区别与联系
区别:分工不同---- 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- <?php
- namespace app\articles\model;
- use think\Model;
- class Staff extends Model
- {
- // 模型创建完成 文件名=类名=数据表名
-
-
- // 这属于内容访问
- public function rname()
- {
- return $this->getData('name');
- }
-
- }
复制代码
articles/controller/Dbn.php- <?php
- namespace app\articles\controller;
- use app\articles\model\Staff; //先引入 staff 类;
- header("Content-type: text/html; charset=utf-8");
- class Dbn
- {
- public function mt1()
- {
- return '进来了mt1 }
- // 第一种实例化调用
- public function mt2()
- {
- $staff = new Staff();
- //下面这句链式调用 其实是模型中的方法 返回的是一个对象 而不是一个数组 数据库中的数据存放在 data属性中
- $lma = $staff->where('id',7)->find();
- // dump($lma); 都打印出来了 太多了
-
- // 如果只想获取原始数据,可以使用getData()方法
- dump($lma->getData()); // 也可以加参数 查看任意一个 getData('name');
- }
- // 这种是静态调用
- public function mt3()
- {
- // dump(Staff::get(6));
- dump(Staff::get(6)->getData());
- }
- // 在控制器中的访问模型对象属于外部访问 例如
- // $lma = Staff::get(6)->getDate(); // 这就是外部访问 也叫控制器访问
- // dump($lma);
- public function mt4()
- {
- // 这是内部访问的第二步,调用我自己在 staff.php 中定义的自定义函数
- $lma = Staff::get(7)->rname();
- dump($lma);
- }
- }
复制代码
|
|