Zend FrameWork之Zend_Db_Table笔记

根据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,明天再看吧~~下班了)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT可乐

Java设计模式之(一)------单例模式

1、什么是单例模式?   采取一定的办法保证在整个软件系统中,单例模式确保对于某个类只能存在一个实例。有如下三个特点:   ①、单例类只能有一个实例   ②、单...

2177
来自专栏java 成神之路

多线程并发下的单例模式

3857
来自专栏菩提树下的杨过

AS3中的单件(Singleton)模式

单件(singleton)模式在c#中是最容易实现的模式,其主要用意就在于限制使用者用new来创建多个实例。但在as3中,构造函数必须是public的(语法本身...

2185
来自专栏玩转JavaEE

MongoDB文档查询操作(一)

上篇文章我们主要介绍了MongoDB的修改操作,本文我们来看看查询操作。 本文是MongoDB系列的第五篇文章,了解前面的文章有助于更好的理解本文: ---- ...

3616
来自专栏爱撒谎的男孩

Mybatis之ResultMap

4184
来自专栏Django Scrapy

day3 sql语句

sqlplus / as sysdba startup sqlplus scott/tiger vi .bash_profile 容宽不够 set lines ...

3109
来自专栏应兆康的专栏

Python Web - Flask笔记5

MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。你可以用MySQL Wor...

1711
来自专栏技术碎碎念

sql server T-SQL 基础

SQL语言按照用途可以分为如下3类: ①DDL(Data Definition Language)  数据定义语言:    定义修改和删除数据库、表、索引和视图...

2895
来自专栏禁心尽力

数据库设计之数据库,数据表和字段等的命名总结

数据库命名规则: 根据项目的实际意思来命名。 数据表命名规则: 1.数据表的命名大部分都是以名词的复数形式并且都为小写; 2.尽量使用前缀"table_"; 3...

2335
来自专栏杨建荣的学习笔记

MySQL中需要注意的字段长度问题

在MySQL的表结构设计中,突然想起来几个地方碰到的问题比较多,大体来说一个就是字符集,一个就是数据类型。 而字符集和数据类型结合起来,就有一个蛮有意思的细节,...

3996

扫码关注云+社区

领取腾讯云代金券