数据模型
~~~
<?php
namespace app\index\model;
use think\Model;
class Staff extends Model {
//Model 均为大写
}
?>
~~~
模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如:
|模型名 |约定对应数据表(假设数据库的前缀定义是 think_)|
|---|---|
|User| think_user|
|UserType| think_user_type|
控制器
~~~
<?php
namespace app\index\controller;
use app\index\model\Staff;
class Index {
public function index(){
$model = new Staff();
dump($model);
}
}
~~~
#### 输出反馈
//该对象共计有32个受保护属性,必须在本类或子类中使用,外部不能直接使用
~~~
object(app\index\model\Staff)#5 (32) {
["connection":protected] => array(0) {
}
["parent":protected] => NULL
["query":protected] => NULL
["name":protected] => string(5) "Staff"
["table":protected] => NULL
["class":protected] => string(21) "app\index\model\Staff"
["error":protected] => NULL
["validate":protected] => NULL
["pk":protected] => NULL
["field":protected] => array(0) {
}
["readonly":protected] => array(0) {
}
["visible":protected] => array(0) {
}
["hidden":protected] => array(0) {
}
["append":protected] => array(0) {
}
["data":protected] => array(0) {
}
["origin":protected] => array(0) {
}
["relation":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(0) {
}
["isUpdate":protected] => bool(false)
["updateWhere":protected] => NULL
["failException":protected] => bool(false)
["useGlobalScope":protected] => bool(true)
["batchValidate":protected] => bool(false)
["resultSetType":protected] => string(5) "array"
["relationWrite":protected] => NULL
}
~~~
目前创建的模型虽然按相关规则,已经与特定数据表绑定了,但是该类的绝大多数属性的值,仍处于默认或不确定状态;
现在该模型中有二个属性值是确定的:
1. $name //模型名称
2. $class //模型类命名空间,即如何找到这个类
其它的属性值,在创建数据对象时,会自动获取。
指定数据表甚至数据库连接
~~~
namespace app\index\model;
class User extends \think\Model
{
// 设置当前模型对应的完整数据表名称
protected $table = 'think_user';
// 设置当前模型的数据库连接
protected $connection = [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
// 数据库调试模式
'debug' => false,
];
}
~~~
和连接数据库的参数一样,connection属性的值也可以设置为数据库的配置参数,而且也是官方推荐的方式,这样可以避免把数据库连接固化在代码里面。
5.0不支持单独设置当前模型的数据表前缀。
- 目录
- 5.0.10环境配置
- 5.0.10控制器模型对象
- 5.0.10模型初始化
- 5.0.10定义数据对象
- 5.0.10创建数据对象data()方法
- 5.0.10创建数据对象-setAttr方法
- 5.0.10创建数据对象__set()方法
- 5.0.10查询数据对象getData()
- 实例
- 5.0.10保存数据save()方法
- 5.0.10保存数据saveAll()
- 5.0.10更新数据save()
- 5.0.10批量更新数据saveAll()
- 5.0.10删除数据delete()
- 5.0.10删除数据destroy()
- 5.0.10traits详解
- ThinkPHP 5.0 速查表
- 注释
- 环境变量配置
- Model分层
- MVC 逻辑服务数据
- Model分层及多对多关联的建立
- 控制器调用逻辑层
- Session
- 子域名session共享
- 系统错误
- 版本错误
- 返回错误
- Token令牌及身份识别
- 关联查询
- 安装
- Git安装
- Composer
- 扩展
- Composer类
- 非Composer类
- 引用第三方库
- 自定义命令行
- 计划任务
- 调试
- 调试模式
- 监听SQL
- 数据库调试
- 单元测试
- 初始化
- 控制器初始化
- 模型初始化
- 数据缓存
- 实战
- 版本升级
- 从V5.0.17升级到V5.0.18