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
用函数读出数据表内容放入二维数组
Oct 09 PHP
php set_time_limit()函数的使用详解
Jun 05 PHP
PHP语法小结之基础和变量
Nov 22 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
Yii2中datetime类的使用
Dec 17 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PDO::rollBack讲解
Jan 29 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
PHP number_format函数原理及实例解析
Jul 14 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 文章调用类代码
2011/08/11 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
numpy中的高维数组转置实例
2018/04/17 Python
Django视图扩展类知识点详解
2019/10/25 Python
Django更新models数据库结构步骤
2020/04/01 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
青春寄语大全
2014/04/09 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
python对文档中元素删除,替换操作
2022/04/02 Python