第七课 数据库操作(模型)
最后更新于:2022-04-01 20:42:10
>[info]之前的课程讲到,使用MVC架构的程序,在与数据库做交互时,都会把操作封装在模型中,而在iWebShop当中,读取操作用 IQuery 类,写入操作用 IModel 类。除非使用自定义的类,IQuery和IModel的操作没有独立成一个文件,在控制器中就可以找到相应的操作代码,本课程就讲一讲这两个类如何使用。
## 一、IQuery 类
IQuery类的定义位于lib\core\query_class中,结构如下:

一般使用比较多的就__set中的各个属性和find方法,对实现原理有兴趣的可以看看这个文件,代码不长
IQuery类使用
以下通过官方的例子来说明
比如我们要查询商品表(goods)里面的 id=10 的商品,则
~~~
$goodsDB = new IQuery('goods'); //goods是表名,这里不需要加前缀
$goodsDB->where = "id = 10"; //where属性相当于sql中的where条件
$goodsData = $goodsDB->find(); //find方法就是执行查询,返回的是一个数组
~~~
从上面的例子可以看出来,IQuery的使用分三步
(1)创建IQuery对象,表名作为参数。
(2)设置对象的属性。
(3)执行查询,得到结果。
有关属性的说明,官方给出了以下说明:
 
## 二、IModel 类
IModel类的定义位于lib\core\query_class中,结构如下:

代码量不大,setData,update,add,del,qurey为常用方法。
以下通过官方的例子来说明
比如要更新 goods 表中id=2的 price 字段,那么就是
~~~
$goodsDB = new IModel(‘goods’);//创建model对象,goods是表名
$goodsDB->setData(array(‘price’ => 1000));//设置表元素,是个二维数组
$goodsDB->update(‘id = 2’); //执行更新动作,此时会把数组的数据更新到数据库中
~~~
从上面的例子可以看出,IModel的操作同样是创建对象,设置数据,执行操作这样的步骤。
有关属性的说明,官方给出了以下说明:


以上为IQuery类和IModel类的用法,具体的实践我们会在后续的课程中举例说明。
>[warning]如有不明白的地方,留言或是加入我们 “三众技术QQ交流群”一起讨论
## 关于我们
>[danger][三众科技](http://www.sunzoon.com)资讯平台——大道至简,悦你所阅!
>本教程由[三众简悦](http://it.sunzoon.com)原创,转载请注明出处,作者:bobball,由bobo整理成看云书籍
三众技术交流群:**543102562**
欢迎大家加入我们,共同讨论IT,互联网技术。同时可以扫描下面的二维码关注我们,谢谢!

';