定义

版本 调整功能
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类的数据表名称属性,以确保能够找到对应的数据表。

设置数据表

如果你想指定数据表甚至数据库连接的话,可以使用:

						
							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不支持单独设置当前模型的数据表前缀。

模型调用

模型类可以使用静态调用或者实例化调用两种方式,例如:

						
							// 静态调用
							$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();
						
					

实例化模型类主要用于调用模型的自定义方法,更多用法参考后面的章节内容。

文档最后更新时间:2018-04-26 10:03:07

文档
目录

深色
模式

切换
宽度