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 相关文章推荐
NO3第三帝国留言簿制作过程
Oct 09 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP模块化安装教程
Jun 01 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
php输出图像的方法实例分析
Feb 16 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 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
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
PHP速成大法
2015/01/30 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
window.onload使用指南
2015/09/13 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
Python部署web开发程序的几种方法
2017/05/05 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python os用法总结
2018/06/08 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
python 深度学习中的4种激活函数
2020/09/18 Python
flask框架中的cookie和session使用
2021/01/31 Python
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
Linux的主要特性
2014/10/06 面试题
网吧消防安全责任书
2014/07/29 职场文书
机关党员公开承诺书
2014/08/30 职场文书
督导岗位职责范本
2015/04/10 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
Java 多态分析
2022/04/26 Java/Android