## 模型初始化 initialize( )
#### 1. 作用:创建模型对象之前做的预处理工作。
>[info] 在ThinkPHP5中,创建数据模型是一个非常容易的过程,整个过程是透明的。
#### 2. 实例演示:创建模型对象前,初始化部分模型类属性
>[info] 模型对象创建时,除了模型名$name和所继承的类$class(命名空间表示)之外,其它所有的模型属性都是空的或只有默认值。随着以后的操作,这些属性会根据操作要求自动完成初始化。
* 第一步:在上节课创建的模型类Staff.php里,添加初始化方法
>[info] 本教程如无特别说明:源码均指:Model.php 类文件中的内容。
文件位置:/thinkphp/library/think/Model.php
~~~
<?php
namespace app\index\model;
//导入模型类
use think\model;
class Staff extends model {
//在子类重写父类的初始化方法initialize()
protected function initialize(){
//继承父类中的initialize()
parent::initialize();
//初始化数据表名称,通常自动获取不需设置
$this->table = 'tp5_staff';
//初始化数据表字段信息
$this->field = $this->db()->getTableInfo('', 'fields');
//初始化数据表字段类型
$this->type = $this->db()->getTableInfo('', 'type');
//初始化数据表主键
$this->pk = $this->db()->getTableInfo('', 'pk');
}
}
~~~
>[info] 在自定义的模型初始化方法中,我们对模型中的相关属性进行初始化:$field,$pk,$table,$type(属性含义上节课已详细说明)
* 第二步:控制器Index.php中进行调用:
~~~
<?php
namespace app\index\controller;
//导入模型类
use app\index\model\Staff;
class Index {
public function index(){
//创建模型类Staff
$model = new Staff();
//查看Staff类实例$model
dump($model);
}
}
~~~
* 第三步:浏览器地址栏输入:tp5.com/index.php/index/index/ 查看这个自定义模型对象
~~~
object(app\index\model\Staff)#5 (28) {
["connection":protected] => array(0) {
}
["query":protected] => NULL
["name":protected] => string(5) "Staff"
//这是我们初始化获取的数据表名称
["table":protected] => string(9) "tp5_staff"
["class":protected] => string(21) "app\index\model\Staff"
["error":protected] => NULL
["validate":protected] => NULL
//这是我们初始化获取的数据表主键信息
["pk":protected] => string(2) "id"
//这是我们初始化获取的数据表字段名信息
["field":protected] => array(7) {
[0] => string(2) "id"
[1] => string(4) "name"
[2] => string(3) "sex"
[3] => string(3) "age"
[4] => string(6) "salary"
[5] => string(4) "dept"
[6] => string(8) "hiredate"
}
["readonly":protected] => array(0) {
}
["visible":protected] => array(0) {
}
["hidden":protected] => array(0) {
}
["append":protected] => array(0) {
}
["data":protected] => array(0) {
}
["change":protected] => array(0) {
}
["auto":protected] => array(0) {
}
["insert":protected] => array(0) {
}
["update":protected] => array(0) {
}
["autoWriteTimestamp":protected] => bool(false)
["createTime":protected] => string(11) "create_time"
["updateTime":protected] => string(11) "update_time"
["dateFormat":protected] => string(11) "Y-m-d H:i:s"
//这是我们初始化获取的数据表字段类型信息
["type":protected] => array(7) {
["id"] => string(15) "int(4) unsigned"
["name"] => string(11) "varchar(30)"
["sex"] => string(19) "tinyint(2) unsigned"
["age"] => string(19) "tinyint(3) unsigned"
["salary"] => string(19) "float(8,2) unsigned"
["dept"] => string(19) "tinyint(2) unsigned"
["hiredate"] => string(4) "date"
}
["isUpdate":protected] => bool(false)
["updateWhere":protected] => NULL
["relation":protected] => NULL
["failException":protected] => bool(false)
["useGlobalScope":protected] => bool(true)
}
~~~
* * * * *
#### 3、总结:
>[success] 模型初始化,绝大多数情况下会自动完成,并不需要我们去做。
- 前言[随时更新]
- 开发环境
- 1.Mac环境
- 2.windows环境
- 模型对象
- 1.创建模型对象
- 2.模型初始化
- 数据对象
- 1.定义数据对象
- 2.创建数据对象
- 1.data方法
- 2.setAttr方法
- 3.__set方法
- 4.查询数据对象
- 1.getData方法
- 2.getAttr方法
- 3.__get方法
- OOP难点总结
- 1.get_class( )实例讲解
- 2.get_called_class( )实例讲解
- 3.__call( )实例讲解
- 3.__callStatic( )实例讲解
- 4.call_user_func_array函数[重点]
- 5.普通方法与静态方法
- 6.在Model源码中的应用
- 7.new static 延迟静态绑定
- PHP标准化规范
- 查询数据
- 1.获取单条:get静态方法
- 2.获取单条:对象查询
- 3.获取多条:all静态方法
- 4.获取多条:对象查询
- 5.获取字段值:value方法
- 6.获取列值:column方法
- 7.动态查询:getBy字段名
- 8.助手函数:model查询
- 9.加载器:Loader类查询
- 10.数据库与模型查询对比
- 新增数据
- 1.sava方法
- 2.savaAll方法
- 3.create静态方法
- 4.insert静态调用
- 更新数据
- 1.单条更新:save方法
- 2.批量更新:saveAll方法
- 3.静态更新:update方法
- 4.查询类Query直接更新
- 5. 闭包更新
- 删除数据
- 1.删除当前记录:delete
- 2.静态条件删除:destory
- 获取器
- 1.模型方法:set属性Attr
- 修改器
- 1.set属性Attr
- 时间戳
- 1.MySQL中日期类型复习
- 2.时间戳功能详解
- 软删除[重点]
- 1.traits详解[选学内容]
- 2.SoftDelet类源码分析
- 3. delete实例删除
- 4.destroy条件删除
- 5.restore恢复数据
- 类型转换
- 1. 规则设置
- 2. 实例演示
- 查询范围
- 1. 基本概念
- 2.实例演示