## 助手函数:model( )
>[info] 与数据库查询一样,模型也提供了助手函数:model( )来方便开发者。
***
#### 1. 功能:简化模型实例化工作。
>[warning] model函数类似于ThinkPHP3.2.3版中大写字母方法M( )和D( )。
***
#### 2. 源码:/thinkphp/Helper.php (助手函数类)
>[info] 助手函数类随框架自动加载,不需要手工导入
* model( )函数源码:
~~~
/**
* 实例化Model
* @param string $name Model名称
* @param string $layer 业务层名称
* @param bool $appendSuffix 是否添加类名后缀
* @return \think\Model
*/
function model($name = '', $layer = 'model', $appendSuffix = false)
{
return Loader::model($name, $layer, $appendSuffix);
}
~~~
>[info] 源码很简单,就是调用加载器静态调用了model方法来完成快速实例化操作。
***
#### 3. 实例演示:
* 创建模型类:/application/index/mode/Staff.php
~~~
<?php
namespace app\index\model;
//导入模型类
use think\model;
class Staff extends model {
//自定义模型类代码
}
~~~
**任务** :查询编号id=1009的员工信息(id编号,姓名name,工资salary)
* 控制器:/application/index/controller/Index.php
~~~
<?php
namespace app\index\controller;
class Index {
public function index(){
//获取满足条件的单个记录:返回一个数据对象
$data = model('Staff')->field('id,name,salary')->where('id = 1009')->find();
//解析数据对象中的原始数据:$data属性
$result = $data -> getData();
//输出结果:二维数组
dump($result);
}
}
~~~
**代码分析:**
>[info] 1. 无须引入自定义模型类:use app\index\model\Staff;
> 2. model函数返回的是模型对象,可以直接调用数据库方法完成查询操作;
> 3. 本例中,model函数返回的是对象,不是类,不能静态调用get方法完成操作;
> 4. 尽管调用的是数据库查询方法find( )完成,但返回的仍是模型对象,不是二维数组;
> 5. 所以要得到原始数据,必须对数据对象$data添加getData操作来获取原始数据;
* 返回结果:
~~~
array(3) {
["id"] => int(1009)
["name"] => string(9) "老顽童"
["salary"] => float(5000)
}
~~~
* 对应的SQL语句:
~~~
SELECT `id`,`name`,`salary` FROM `tp5_staff` WHERE ( id = 1009 ) LIMIT 1
~~~
* 用SQLPRO for MySQL查看:
![](https://box.kancloud.cn/87cabf39346059ddeb5cd60e1fe1a5b1_663x268.png)
* * * * *
#### 4. 总结:
>[warning] 助手函数model语法简单,代码清晰,但执行效率远低于模型静态方法查询!静态方法语法较复杂,代码量大,但执行效率高,适合装逼。究竟用哪个,读者自己决定吧!总之,我是一直坚持用静态方法查询。
- 前言[随时更新]
- 开发环境
- 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.实例演示