前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zend FrameWork之Zend_Db_Table笔记

Zend FrameWork之Zend_Db_Table笔记

作者头像
苦咖啡
发布2018-05-08 18:19:52
1.2K0
发布2018-05-08 18:19:52
举报
文章被收录于专栏:我的博客我的博客

根据Zend_Db_Table操作数据(也就是在models建立一个对应表的模型) 准备条件: course数据表中有cid课程号,自增,主键,cname课程名称,ccredit课程学分 在models建立Course.php编写Course类继承Zend_Db_Table 写表$_name=’course’;表主键$_primary=’cid’; 1.插入记录操作 要在表中插入一行新数据,只需要将列名:数据的关联数组作为参数,调 用insert()方法即可.(zend framework)会自动对数据进行加引号处理, 并返回插入的最后一行的id值(注意:这里不同于 zend_db_adapter::insert方法,后者返回的是插入的行数). 例子: $cModel = new Course(); $data = array(‘cname’ => ‘网络编程’, ‘ccredit’ => ‘2’); //cname和ccredit必须和数据表字段对应 $cModel->insert($data);//这样数据库中就会增加一条信息

2.更新数据操作 要修改表中的任意行数据,我们可以设定一个列名:数据的关联数组作为参数,调 用update()方法,同是通过一个where条件从句来决定需要改变的行.该方法将会 修改表中数据并返回被修改的行数. 条件从句不会增加引号,所以建议使Adapter编写 例子: $cModel = new Course(); $where = $cModel->getAdapter()->quoteInto(“`cid` = ?”, 2); $data = array(‘cname’ => ‘C语言’, ‘ccredit’ => ‘3’); $cModel->update($data, $where);

3.删除数据操作 要删除表中的数据,我们可以调用delete()方法,同时通过一个where条件 分句来决定需要删除的行.该方法将会返回被删除的行数. (同样的where条件尽量也用Adapter编写) 例子: $cModel = new Course(); $where = $cModel->getAdapter()->quoteInto(“`cid` = ?”, 2); $cModel->delete($where);

4.查找数据操作 通过调用find()方法,可以使用主键值轻松地在表中检索数据.假如你只想要查询某 一条数据,该方法将回返回一个zend_db_table_row对象,而当你想要查询多条记录时 ,将会返回一个zend_db_table_rowset对象. 例子: $cModel = new Course(); $cid = 1; $result = $cModel->find($cid)->toArray(); //这样等同select * from `course` where `cid` = 1 //由于是一个对象所以需要转成数组

//根据主键查找多个数据 $cModel = new Course(); $cid = array(1,2,3); $result = $cModel->find($cid)->toArray();

虽然通过主键找到相应数据行是很便利的事情,但是在更多的时候,我们是 通过其他一些非主键的条件来查找数据行的.zend_db_table提供了一个 fetchRow()方法可以实现这个功能.我们可以通过一个where条件语句(和一 个可选的order语句)调用fetchRow()方法,然后zend_db_tabel将会返回满 足条件的第一行数据的zend_db_table_row对象. 例子: $cModel = new Course(); $where = “`cname` = ‘PHP编程'”;//这样的sql不会自动添加引号,尽量使用Adapter $result = $cModel->fetchRow($where)->toArray();

假如需要一次检索多条记录.可以使用fetchAll()方法.和使用fetchRow()方法类 似,该方法不仅仅可以设定where和order分句,也可以设定limit-count和 limit-offset值来限制返回的结果数.执行该方法后,把选择的结果作为一个 Zend_Db_Table_Rowset对象返回. 例子: $cModel = new Course(); $where = “cid >= 1”; $order = “cid desc”; $count = 20; $offset = 0; $result = $cModel->fetchAll($where, $order, $count, $offset)->toArray();

特殊功能: 作为Zend Framework的表模块,Zend_Db_Table将它自己很好的封装到独特的domain logic下. 例如,你可以重载insert()和update()方法,以实现在数据更改提交前的操作和验证. public function update($data) { // 添加一个时间戳 if (empty($data[‘updated_on’])) { $data[‘updated_on’] = time(); } return parent::update($data); } 类似的,你也可以设定自己的find()方法,通过主键外的其他字段来查询数据. <?php class RoundTable extends Zend_Db_Table { public function findAllWithName($name) { $db = $this->getAdapter(); $where = $db->quoteInto(“name = ?”, $name); $order = “first_name”; return $this->fetchAll($where, $order); } } ?>

(PS:Zend_Db_Table连接数据还是使用的Adapter,明天再看吧~~下班了)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年1月8日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档