tp5--模型

ThinkPHP5.0的模型进行了重构,提供完全对象化操作,支持静态调用、读取器/修改器、时间戳自动写入等功能。模型事件、命名范围、类型转换、数据验证和关联查询等特性让模型使用更加灵活。了解模型的定义、数据表设置、新增、更新、删除及查询操作,有助于更好地掌握TP5框架。
摘要由CSDN通过智能技术生成

thinkphp5.0-模型

新版的模型进行了重构,更加对象化操作,包括关联模型的重构,主要特性包括:

  • 完全对象式访问
  • 支持静态调用(查询)
  • 支持读取器/修改器
  • 时间戳字段自动写入
  • 对象/数组访问
  • JSON序列化
  • 模型事件触发
  • 命名范围
  • 类型自动转换
  • 数据验证和自动完成
  • 关联查询/操作
  • 关联预载入

请不要以3.2版本的模型思维来使用5.0的模型,充分理解和掌握新版模 型的用法对于熟练掌握TP5有很大的帮助。

定义
版本 调整功能
5.0.5 model 或者 Loader::model 方法支持传入完整的模型类名
模型定义
定义一个User模型类:

namespace	app\index\model;
use	think\Model;
class	User	extends	Model
{
}

默认主键为自动识别,如果需要指定,可以设置属性:

namespace	app\index\model;
use	think\Model;
class	User	extends	Model
{
				protected	$pk	=	'uid';
}

模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,
并且首字母大写,例如:
模型名 约定对应数据表(假设数据库的前缀定义是 think_)

User think_user
UserType think_user_type

如果你的规则和上面的系统约定不符合,那么需要设置Model类的数据表名称属性,以确保
能够找到对应的数据表。
设置数据表
如果你想指定数据表甚至数据库连接的话,可以使用:
如果你的规则和上面的系统约定不符合,那么需要设置Model类的数据表名称属性,以确保
能够找到对应的数据表。
设置数据表
如果你想指定数据表甚至数据库连接的话,可以使用:

//	静态调用
$user	=	User::get(1);
$user->name	=	'thinkphp';
$user->save();
//	实例化模型
$user	=	new	User;
$user->name=	'thinkphp';
$user->save();
//	使用	Loader	类实例化(单例)
$user	=	Loader::model('User');
//	或者使用助手函数`model`
$user	=	model('User');
$user->name=	'thinkphp';
$user->save();

模型初始化
模型同样支持初始化,与控制器的初始化不同的是,模型的初始化是重写 Model 的
initialize ,具体如下

namespace	app\index\model;
use	think\Model;
class	Index	extends	Model
{
				//自定义初始化
				protected	function	initialize()
				{
								//需要调用`Model`的`initialize`方法
								parent::initialize();
								//TODO:自定义的初始化
				}
}

同样也可以使用静态 init 方法,需要注意的是 init 只在第一次实例化的时候执行,并且
方法内需要注意静态调用的规范,具体如下:

namespace	app\index\model;
use	think\Model;
class	Index	extends	Model
{
				//自定义初始化
				protected	static	function	init()
				{
								//TODO:自定义的初始化
				}
}

新增
新增数据有多种方式。
添加一条数据
第一种是实例化模型对象后赋值并保存:

$user											=	new	User;
$user->name					=	'thinkphp';
$user->email				=	'thinkphp@qq.com';
$user->save();
也可以使用 data 方法批量赋值:
$user	=	new	User;
$user->data([
				'name'		=>		'thinkphp',
				'email'	=>		'thinkphp@qq.com'
]);
$user->save();

或者直接在实例化的时候传入数据

$user	=	new	User([
				'name'		=>		'thinkphp',
				'email'	=>		'thinkphp@qq.com'
]);
$user->save();

如果需要过滤非数据表字段的数据,可以使用:

$user	=	new	User($_POST);
//	过滤post数组中的非数据表字段数据
$user->allowField(true)->save();

如果你通过外部提交赋值给模型,并且希望指定某些字段写入,可以使用:

$user	=	new	User($_POST);
//	post数组中只有name和email字段会写入
$user->allowField(['name','email'])->save();

save方法新增数据返回的是写入的记录数。
获取自增ID
如果要获取新增数据的自增ID,可以使用下面的方式:

$user											=	new	User;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值