Zend Framework教程之Zend_Db_Table_Row用法实例分析


Posted in PHP onMarch 21, 2016

本文实例讲述了Zend Framework教程之Zend_Db_Table_Row用法。分享给大家供大家参考,具体如下:

1. 简介

Zend_Db_Table_Row是Zend Framework的行数据网关.通常来说,你不可以自己实例化Zend_Db_Table_Row, 而是通过调用Zend_Db_Table::find()方法或者Zend_Db_Table::fetchRow()方法将Zend_Db_Table_Row作为 结果数据返回过来.一旦你得到来一个Zend_Db_Table_Row对象,你可以修改记录值(体现为类的属性)然后 调用save()方法可以将更改保存到原表上.

2. 取回一条记录

首先,需要实例化一个Zend_Db_Table类.

<?php
// 设置一个 adapter
require_once 'Zend/Db.php';
$params = array (
  'host'   => '127.0.0.1',
  'username' => 'malory',
  'password' => '******',
  'dbname'  => 'camelot'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
// 为所有的Zend_Db_Table对象设置默认adapter
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);
// 连接到数据库中的某一个表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
?>

接下来,使用Zend_Db_Table::find()方法和主键进行查询,或者使 用Zend_Db_Table::fetchRow()方法查询.
得到的返回结果是一个Zend_Db_Table_Row 对象,该对象的属性名采用camelCaps的形式对应数据库中带下划线的表名.
如,表名 若为first_name,那么类中的改属性则为firstName.

<?php
// 从表中取回的结果数据是一个Zend_Db_Table_Row对象
$row = $table->fetchRow('first_name = "Robin"');
//
// $row现在是一个带有多种公有属性的Zend_Db_Table_Row对象
// that map to table columns:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
?>

3. 修改数据

修改行数据是一件很轻松的事情:只需要按照常规的方法修改类属性.然后调用save()方法 就将改变的结果保存到了数据表中.

<?php
// 连接到数据库中的表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// 从表中取回的结果数据是一个Zend_Db_Table_Row对象
$row = $table->fetchRow('first_name = "Robin"');
//
// $row现在是一个带有多种公有属性的Zend_Db_Table_Row对象
// that map to table columns:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
// 改变favorite color字段,并且将变动存储到数据表中.
$row->favoriteColor = 'blue';
$row->save();
?>

但是,你不能够修改主键的值.假如你试图进行改操作, Zend_Db_Table_Row将抛出一个异常.

<?php
// 连接到数据库中的表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// fetch a record from the table as a Zend_Db_Table_Row object
$row = $table->fetchRow('first_name = "Robin"');
// 我们尝试修改主键值
try {
  $row->id = 5;
  echo "We should not see this message, as an exception was thrown.";
} catch (Zend_Db_Table_RowException $e) {
  echo $e->getMessage();
}
?>

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
php自动获取目录下的模板的代码
Aug 08 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
万能的php分页类
Jul 06 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 #PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 #PHP
PHP常见数组函数用法小结
Mar 21 #PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 #PHP
Zend Framework入门知识点小结
Mar 19 #PHP
Zend Framework缓存Cache用法简单实例
Mar 19 #PHP
Zend Framework基本页面布局分析
Mar 19 #PHP
You might like
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
JavaScript prototype属性深入介绍
2012/11/27 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
小学老师寄语大全
2014/04/04 职场文书
毕业生面试求职信
2014/06/23 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
你真的会用Mysql的explain吗
2022/03/31 MySQL
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android