编程重要思想 :用不同的对象和类完成任务
用不同的对象和类验证id
用不同的对象和类抛出异常
用不同的对象和类连接数据库操作数据库
Think操作数据库的三种方式:
(1)原生sql :
$rs = Db::query('select * from zerg_goods where id=?',[$id]);
(2)查询构建器
$result = Db::table('zerg_goods')->where('id','=',$id); //此时的$result是一个对象如下图
得到最终的结果还要用find()或者select()才会最终生成sql语句:
Db::table('zerg_goods')->where('id','=',$id)->find()
Db::table('zerg_goods')->where('id','=',$id)->select()
$rs=Db::table('zerg_goods')->where('id','=',$id)->select()
真正的数据库的执行方法
find()
select()
uopdate()
insert()
delete()
where条件的三种写法
where (表达式)
where (数组):安全性不好
where (闭包):里边就是构建一个查询连接对象,不能用->select()
(3)ORM模型
think操作数据库框架图
Db,Collection,Query,Bulid四个对象的作用
Db:
数据库操作的一个入口对象。
作用:
(1)就是说增删改查都是通过操作Db对象来完成:Db::query
(2)肩负着连接数据库。在Db内部通过实例化Collection对象来连接数据库
Collection数据库连接器:连接数据库对象
(惰性):它并不是连接了数据 库而是出于待命状态,当你执行sql语句时才真正的去连接数据库。
如果是用原生的sql那么并不需要Query和builder
Query查询器:被封装的查询器对象
Builder对象:把Query查询器的sql编译成原生的sql
Drives驱动:
就是提供几种不同的数据库连接类型,每种类负责不同的数据库的连接
模型
ORM:
对象关系映射,就是用面向对象的思维:ORM就是把数据表思考为一个对象
当我们用ORM操作数据库的时候并不是操作表,我们操作的是一个对象,具体是怎么操作数据库细节不用关心
表与表的关系就变成对象与对象的作用关系
th5中的模型
就是实现ORM的一个具体机制
th5的模型:不仅仅是做数据库的查询还可以包含相关的业务逻辑 可以把模型理为对象。延伸:模型就是业务的集合,也可以是多个对象的集合,多个对象组合在一起也可以看成一个模型
模型和表和对象之间没有必然的联系,不是一一对应关系,他是按照业务(功能区)划分的,所以不要把模型看做是数据库的查询,更关心的是业务逻辑,所以不要把模型和数据库11对应
总结
ORM :一个表对应一个对象
模型:一个模型对应多个表或者对应多个对象