mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...
之所以从20天才开始写随笔记是因为之前没搞自己的博客
从20天开始记录我在ThinkPHP中的点点滴滴
1、MySQL事务操作
/**事务操作*/
//startTrans启动事务、rollback回调、commit提交
//使用场景:交易系统
Db::startTrans();$row = Db::name("users")->dec('count',50)->where('userID',28)->update();if($row !== false){$row1 = Db::name("users")->inc('count',50)->where('userID',13)->update();if($row1!==false){$result = Db::name("users")->field('count')->where('userID',28)->find();if ($result['count']>=0){
Db::commit();//提交事务,交易成功
echo "交易成功!!!";
}else{
Db::rollback();echo "交易失败,您的余额已不足请及时充值!!!";
}
}else{
Db::rollback();//回调,交易失败
echo "交易失败!!!";
}
}else{
Db::rollback();//交易失败
echo "交易失败!!!";
}
2、ThinkPHP查询事件
//在执行数据库操作触发的事件,如在查询数据前插入一条数据
//1、查询前回调:before_select 、before_find
//2、插入成功后回调:after_insert
//3、更新成功后回调:after_update
//4、删除成功后回调:after_delete
// 注册一个事件,查询之前调用add方法
Db::event('before_select',[$this,'add']);$data = Db::name("users")->select();
dump($data);
// add方法public function add(){
$date = [
'userName' => '小铭',
'password' => 'MingGyGy'
];
$siz = Db::name("users")->insert($date);
dump($siz);
/*$result = Db::name("users")->data($date)->where("userID","=",21)->update();
dump($result);*/
}
3、ThinkPHP关联数据库操作
一对一关联(正向关联):
1)关联查询
老师表对应模型中的方法:
//定义一个关联方法 使用对应的模型名称 对应的表名称
public functiongrade(){/**
* // hasOne()方法
* 第一个参数是需要关联的模型名称
* 第二个参数是关联外键名称 默认为:表名_id
* 第三个参数是当前主键名称 默认自动获取,也可手动设置*/
return $this->hasOne('Grade');
}
控制器中的方法:
public function join(){$teache = Teacher::get(1); //得到教师表的对象
$grade = $teache->grade;//grade为对应的模型方法 获得班级的对象
echo $teache->name."老师所带的班级:".$grade->name.$grade->id."班";
}
2)关联添加数据
public function join(){//实例化教师表
$teacher = newTeacher;//教师表数据
$tDate =["name" => "王富贵"];//班级表数据
$gDate =["Grade" =>['id' => '1704',
'name' => '电商']
];$teacher->together($gDate)->save($tDate);
}
3)关联更新数据
public function join(){$teacher = Teacher::get(4);$teacher->name = "二哈";//更新班级数据
$teacher->grade->name = '软件1701';$teacher->together('grade')->save();
}
4)关联删除数据
public function join(){$teacher = Teacher::get(4);$teacher->delete(); //删除老师数据
$teacher->grade->delete(); //删除班级数据
}
反向关联
班级表的模型中:
//反向关联
public functionteacher(){return self::belongsTo("Teacher");
}
反向关联查询班级所对应的老师名称:
/**
* 反向关联查询(其它的增、删、改操作与正向关联类似)*/publicfunctionjoin(){$teacher = Grade::get(1)->teacher;echo $teacher->name;
}
数据库一对多关联操作
商品表为:Goods 品牌表为:Brand
在操作一对多关联查询操作之前需要创建数据表所对应的模型,在Brand模型中加入goods方法,方法中的内容为return self::hasMany('Goods');//Goods为对应的模型名称或者说是商品模型类的名称。
public functiongoods(){return self::hasMany("Goods");
}
一对多关联查询
public function join(){$Breand = Breand::get(1)->goods; //Breand类中的goods方法,返回一个数据集
dump($Breand); //打印这个数据集
//如果要使用数据集里面的数据可用foreach()来遍历其中的数据集
foreach($Breand as $value){echo "商品名称:".$value->goods_name;
}
}
一对多关联条件查询
public function join(){$obj = Brand::get(3);$goods = $obj->goods()->where('price','field("goods_name")->select();foreach (goods as $good){echo "商品:".$good->goods_name;
}
}
一对多关联增加(单增加商品)
public function join(){$goodDate=['goods_name' => 'Nubia Z20',
'price' => '2999'];$brand = Brand::get(4);$brand->goods()->save($goodDate);
}
一对多关联增加(同步添加商品信息和品牌信息)
public function join(){//定义Goods表数据
$goodDate =["goods" =>["goods_name" => "Nubia X",
"price" => "2599"]
];//定义品牌表信息
$brandDate =["brand_name" => "Nubia"];$brand = newBrand();$brand->together($goodDate)->save($brandDate);
}
一对多关联删除
public function join(){$brand = Brand::get(1,'goods');$brand->together('goods')->delete();
}
mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...相关推荐
- java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实 ...
- 小郭经典mysql面试题资料_程序员经典面试题,Mysql是如何完成一次数据查询的...
数据库,大家都不陌生,这是程序员的基本技能了.当然,我们更多时候只是去了解如何使用数据库,而对数据库一些底层原理却比较陌生,今天我们来了解一下,一条数据库查询语句的取经之路. 基本分层 个人认为,My ...
- 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解
主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...
- mysql分页是物理分页_学习MySQL:什么是分页
mysql分页是物理分页 In this article, I am going to explain that in MySQL, what is pagination and how we can ...
- mysql 如何对表排序_学习MySQL:对表中的数据进行排序和过滤
mysql 如何对表排序 In this article, we will learn how we can sort and filter data using the WHERE clause a ...
- mysql入门视频 吾_学习猿地-全网最新版本MySQL8全套视频教程(学完这个课 MySQL 就精通了)...
课程目录: 1.1.认识MySQL+ J" A7 q: A1 j9 `( O; } 2.1.认识MySQL.size 3.2.安装配置MySQL 4.2.安装配置MySQL.size 5.3 ...
- MySQL代做题_转行数据分析第三篇:mysql查询入门练习题
这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...
- jdbc如何对mysql数据库进行查询_【转载】通过JDBC对MySQL数据库的增删改查
目录 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接 ...
- mysql新手注意事项_学习mysql的注意事项!
增删改查 先学增! 1:数字不用加双引号 2;字符串必须加双引号 3: 更新 所有行的单词:update 指点行:update 你想更新 谁的 就是 你想改哪一行! 需要记住的 有几个关键的问题!改 ...
最新文章
- SUBMIT 的使用方法
- Spring CommonsMultipartResolver 上传文件
- 【视觉项目】【day5】8.25号实验记录(修完BUG,28张测试图,13个样本,四张测试图误判,这比之前效果好很多了)
- Java——集合经典面试题
- 日志框架选型,Logback 还是 Log4j2?
- 记一篇使用iframe需要翻阅的帖子
- 气体灭火系统常见构件及其作用!
- 快捷连接 残差_残差网络解决了什么问题
- 文字转语音合成器哪个好?这些文字转语音软件值得收藏
- 计算机utf-8/gbk/utf-16对照表
- 电信资费七宗罪,终端的故事
- Qt 信号槽的应用(三)
- 网页 浏览器兼容性问题的解决
- 要想数组用的 6,怎能不懂 java.util.Arrays
- 前端工程师到底有哪些晋升和发展方向选择?
- 0.泡妞与设计模式(一)工厂模式
- 骨龄特征点定位、以及预测
- 02_C++实现多线程服务器代码(linux系统)
- 有苦有乐的算法 --- 二叉树的按层遍历
- ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...
热门文章
- html 换行符_每个非网站开发人员都应该了解的21个HTML基础知识
- cs架构用什么语言开发_C、C++、Go 语言、Linux服务器开发高级架构师进阶之路
- java 正则 尖括号_使用JS正则表达式替换括号,尖括号等
- elasticsearch中rollover的用法
- 服务发现系统etcd介绍
- 阻止地图的放大和缩小_Arcgis画地图详细步骤(真的!!)
- 旋钮编码器c代码_人脸合成效果媲美StyleGAN,而它是个自编码器
- ios 重复引用 静态库_iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题...
- GIT的基本操作(建立自己的git远程仓库)
- leetcode-72-编辑距离