(9)学习tp5之模型
程序员文章站
2024-03-19 18:57:40
...
系统学习tp5框架,请点击下面的连接
(2)学习tp5之常量、自动加载、命名空间
(3)学习tp5之配置文件
(4)学习tp5之路由类型,定义,动态注册,过滤,闭包,miss(默认),资源路由
(5)学习tp5之请求
(6)学tp5之响应
(7)学习tp5之控制器原理和使用
(8)学习tp5之ORM操作数据库
(9)学习tp5之模型
(10)学习tp5之视图
(11)学习tp5之命令行的使用和验证表单令牌
(12)学习tp5之验证码和缓存
(13)学习tp5之上传图片
(14)学习tp5之日志
(15)学习tp5之 自定义命令行
模型命名:使用去掉前缀的表名(大驼峰).php
注意:使用模型中记得修改配置文件
// 数据集返回类型 'resultset_type' => 'collection', //手册-》数据库-》数据集
1、路由
2、控制器中的代码(当前是UserController控制器)
//往模型中【插入】数据
public function add(){
//二维插入多条,一维插入1条
$data = [
['name' => 'tp', 'password' => '123', 'fee' => 99],
['name' => 'tp1', 'password' => '123', 'fee' => 99]
];
$obj = new User();
$obj->userAdd($data); //调模型中的方法
}
//在模型中【查询】数据
public function select(){
$res = User::userSelect(); //调静态
$obj = new User();
$ratioRes = $obj->selectRatioResult();
dump($res);
}
//关联模型
public function relevanceModel(){
//总结:1、查询和更新是以属性的形式调,不要加();2、get()里面传啥值,看sql追踪的,一般是外键
//dump(User::get(2)->userInfo->toArray()); //关联【查询】
//关联【新增】是给user_info(b)表新增。
//User::get(9)->userInfo()->save(['email'=>'aaa@qq.com','mobile'=>'2222']);
//关联【更新】更新第1条。先查出一条外键=3的。更新时拿外键对应的本表id做条件
User::get(1)->userInfo->save(['email'=>'aaa@qq.com','mobile'=>'222','user_id'=>'1']); //只适用于1对1
}
3、模型中的代码(当前是User模型)
public function userAdd($data){ //插入单条,方式1,使用父类 $this->data($data); $this->save(); //插入单条,方式2,使用orm的Db Db::name('user')->insert($data); //插入多条 $this->saveAll($data); } //使用模型1,需要将数据库配置文件中的'resultset_type' => 'collection',改成数据集这样方便操作 public static function userSelect(){ //使用模型的 静态方法。本类调父类中的静态方法 //$res = self::get('1'); //查单条 $res = self::all([1,3,4]); //查多条 return $res->reverse()->toArray(); //reverse()倒序是手册-》数据库-》数据集中的方法 } //使用模型2 public function selectRatioResult(){ //使用orm的Db $dbRes = Db::name('user')->where(['id'=>2])->find(); dump($dbRes); //Db返回的是数组 //使用模型的 $modelRes = $this->where(['id'=>1])->find(); //模型返回的是对象 return $modelRes->toArray(); //只有数据集对象,才可以转成数组(前提是要改数据库配置文件) } //【关联模型】方法名的定义规则,一般是模型名 public function userInfo(){ /* * user 是a表。 * user_info是b表,通过user_id字段和a表的id做外键关联。 * 第1个参数是b表模型名,第2个参数是b表的外键,第3个参数是a表的主键 * */ //return $this->hasOne('UserInfo','user_id','id'); //【一对一】 return $this->hasMany('UserInfo','user_id','id')->field('email'); //【一对多】 }