之所以从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事务操作、查询事件、一对一关联...相关推荐

  1. java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实 ...

  2. 小郭经典mysql面试题资料_程序员经典面试题,Mysql是如何完成一次数据查询的...

    数据库,大家都不陌生,这是程序员的基本技能了.当然,我们更多时候只是去了解如何使用数据库,而对数据库一些底层原理却比较陌生,今天我们来了解一下,一条数据库查询语句的取经之路. 基本分层 个人认为,My ...

  3. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  4. mysql分页是物理分页_学习MySQL:什么是分页

    mysql分页是物理分页 In this article, I am going to explain that in MySQL, what is pagination and how we can ...

  5. mysql 如何对表排序_学习MySQL:对表中的数据进行排序和过滤

    mysql 如何对表排序 In this article, we will learn how we can sort and filter data using the WHERE clause a ...

  6. 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 ...

  7. MySQL代做题_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  8. jdbc如何对mysql数据库进行查询_【转载】通过JDBC对MySQL数据库的增删改查

    目录 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接 ...

  9. mysql新手注意事项_学习mysql的注意事项!

    增删改查 先学增! 1:数字不用加双引号 2;字符串必须加双引号 3: 更新 所有行的单词:update 指点行:update 你想更新 谁的 就是 你想改哪一行! 需要记住的 有几个关键的问题!改 ...

最新文章

  1. SUBMIT 的使用方法
  2. Spring CommonsMultipartResolver 上传文件
  3. 【视觉项目】【day5】8.25号实验记录(修完BUG,28张测试图,13个样本,四张测试图误判,这比之前效果好很多了)
  4. Java——集合经典面试题
  5. 日志框架选型,Logback 还是 Log4j2?
  6. 记一篇使用iframe需要翻阅的帖子
  7. 气体灭火系统常见构件及其作用!
  8. 快捷连接 残差_残差网络解决了什么问题
  9. 文字转语音合成器哪个好?这些文字转语音软件值得收藏
  10. 计算机utf-8/gbk/utf-16对照表
  11. 电信资费七宗罪,终端的故事
  12. Qt 信号槽的应用(三)
  13. 网页 浏览器兼容性问题的解决
  14. 要想数组用的 6,怎能不懂 java.util.Arrays
  15. 前端工程师到底有哪些晋升和发展方向选择?
  16. 0.泡妞与设计模式(一)工厂模式
  17. 骨龄特征点定位、以及预测
  18. 02_C++实现多线程服务器代码(linux系统)
  19. 有苦有乐的算法 --- 二叉树的按层遍历
  20. ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...

热门文章

  1. html 换行符_每个非网站开发人员都应该了解的21个HTML基础知识
  2. cs架构用什么语言开发_C、C++、Go 语言、Linux服务器开发高级架构师进阶之路
  3. java 正则 尖括号_使用JS正则表达式替换括号,尖括号等
  4. elasticsearch中rollover的用法
  5. 服务发现系统etcd介绍
  6. 阻止地图的放大和缩小_Arcgis画地图详细步骤(真的!!)
  7. 旋钮编码器c代码_人脸合成效果媲美StyleGAN,而它是个自编码器
  8. ios 重复引用 静态库_iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题...
  9. GIT的基本操作(建立自己的git远程仓库)
  10. leetcode-72-编辑距离