JTable类是Active Record设计模式(web应用中应用最为广泛,最为简单的数据库相关的设计模式,笔者)的实现。JTable在joomla与数据库交互过程中广泛的使用。要使用JTable,首先要创建一个JTable的子类。下面是我们的一个例子:
defined('_JEXEC') or die();
class TableRecipes extends JTable
{
var $id = null;
var $ingredients = null;
var $instructions = null;
var $serves = null;
var $difficulty = null;
var $prep_time = null;
var $cook_time = null;
var $published = 0;
function __construct(&$db)
{
parent::__construct( '#__recipes', 'id', $db );
}
}
JTable的子类命名前缀是Table,然后就是首字母大写的表名,类中的成员变量对应着数据库中的字段名,默认值与表中的字段默认值应该相同。加入字段默认是NOT NULL,那就不能采用 'null'作为成员变量的默认值。
最后是类的构造器,构造器的参数是当前数据库的引用,子类的构造器调用JTable的构造器,父类的构造器有三个输入参数,第一个参数是表名,第二个是主键,第三个是当前数据库的链接。加入以上的类应用在Recipes组件上,那么代码应该放在/administrator/components /com_recipes/tables/recipes.php.文件中。
如何使用JTable扩展
为了使用JTable扩展,要首先在组件的代码中引入,下面一行是引入代码:
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');
用下面的代码,可以获得JTable 扩展类的对象。
$row =& JTable::getInstance('recipes', 'Table');
请注意全小写的类名作为第一个参数,而 'Table'作为第二个参数,getInstance函数返回JTable的引用。
在model类(组件的JModel扩展)中可以可以采用以下代码获得JTable扩展的实例。
$row =& $this->getTable('recipes');
添加和更新数据记录
通常情况下,用户在客户端通过html form提交数据,而JRequest可以协助获得这些数据,用JRequest::get('post')可以获得 HTTP POST 方式提交的数组,获得的数组可以传递给bind函数。bind函数将post中对应内容自动绑定到相应名称的成员变量,请看下面的例子:
if (!$row->bind( JRequest::get( 'post' ) )) {
return JError::raiseWarning( 500, $row->getError() );
}
注意上面代码中的 JError::raiseWarning,JError::raiseWarning在bind方法出错的时候停止执行,getError()可以得到 JTable对象bind出错的返回信息。如果绑定成功,接下来调用store()函数。
if (!$row->store()) {
JError::raiseError(500, $row->getError() );
}
如果 JTable对象的任何成员变量为空,这些变量被默认忽略,这样可以更新指定字段,如果需要每个字段都有值,可以在store()函数中加上参数 'true',bind函数不检查数据类型,如果你要保证数据完整性,请在保存数据前程序代码中检查一下。
JTable读取数据
如果要用JTable加载表中指定一行,传递主键给load成员函数。以下是代码:
$row->load( $id );
JTable 删除数据
下面是代码是删除例子,删除指定的数据,要用delete函数。
$row->delete( $id );
如果要一次删除多行数据,你需要手动写query语句。
defined('_JEXEC') or die();
class TableRecipes extends JTable
{
var $id = null;
var $ingredients = null;
var $instructions = null;
var $serves = null;
var $difficulty = null;
var $prep_time = null;
var $cook_time = null;
var $published = 0;
function __construct(&$db)
{
parent::__construct( '#__recipes', 'id', $db );
}
}
JTable的子类命名前缀是Table,然后就是首字母大写的表名,类中的成员变量对应着数据库中的字段名,默认值与表中的字段默认值应该相同。加入字段默认是NOT NULL,那就不能采用 'null'作为成员变量的默认值。
最后是类的构造器,构造器的参数是当前数据库的引用,子类的构造器调用JTable的构造器,父类的构造器有三个输入参数,第一个参数是表名,第二个是主键,第三个是当前数据库的链接。加入以上的类应用在Recipes组件上,那么代码应该放在/administrator/components /com_recipes/tables/recipes.php.文件中。
如何使用JTable扩展
为了使用JTable扩展,要首先在组件的代码中引入,下面一行是引入代码:
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_recipes'.DS.'tables');
用下面的代码,可以获得JTable 扩展类的对象。
$row =& JTable::getInstance('recipes', 'Table');
请注意全小写的类名作为第一个参数,而 'Table'作为第二个参数,getInstance函数返回JTable的引用。
在model类(组件的JModel扩展)中可以可以采用以下代码获得JTable扩展的实例。
$row =& $this->getTable('recipes');
添加和更新数据记录
通常情况下,用户在客户端通过html form提交数据,而JRequest可以协助获得这些数据,用JRequest::get('post')可以获得 HTTP POST 方式提交的数组,获得的数组可以传递给bind函数。bind函数将post中对应内容自动绑定到相应名称的成员变量,请看下面的例子:
if (!$row->bind( JRequest::get( 'post' ) )) {
return JError::raiseWarning( 500, $row->getError() );
}
注意上面代码中的 JError::raiseWarning,JError::raiseWarning在bind方法出错的时候停止执行,getError()可以得到 JTable对象bind出错的返回信息。如果绑定成功,接下来调用store()函数。
if (!$row->store()) {
JError::raiseError(500, $row->getError() );
}
如果 JTable对象的任何成员变量为空,这些变量被默认忽略,这样可以更新指定字段,如果需要每个字段都有值,可以在store()函数中加上参数 'true',bind函数不检查数据类型,如果你要保证数据完整性,请在保存数据前程序代码中检查一下。
JTable读取数据
如果要用JTable加载表中指定一行,传递主键给load成员函数。以下是代码:
$row->load( $id );
JTable 删除数据
下面是代码是删除例子,删除指定的数据,要用delete函数。
$row->delete( $id );
如果要一次删除多行数据,你需要手动写query语句。
发表评论
-
joomla 模块modules开发教程
2010-05-12 14:16 2799模块是页面扩展轻量级方式,相对组件更为灵活。模块通常用来做页面 ... -
joomla 1.5——JDocument类用法
2010-04-22 14:46 1391文档类,提供一个容易 ... -
[翻译] Joomla XML 解析器规范 上
2010-04-22 14:45 1077概述 Joomla! 1.5 新增 JSimpleXML 类 ... -
Joomla插件开发规范
2010-04-22 14:44 1406概述:JPlugin Joomla 1.5的新功能 为了更好 ... -
joomla源代码探析续(三十一) JHTML 类常用的方法
2010-04-22 14:37 1740我曾经在几篇文章中涉及到JHTML的方法使用,这里不再说了,请 ... -
joomla源代码探析续(三十) JDate类参考
2010-04-22 14:36 1081JDate类与JString类一样是Joomla!中的基础类, ... -
joomla源代码探析续(二十九) JHTML 与JHTMLSelect 类的使用
2010-04-22 14:33 1207我们在form表单生成的过程中,经常需要有select 标签或 ... -
joomla源代码探析续(二十七)组件后台如何设置参数
2010-04-22 14:29 926以下的方法可以在管理后台中添加一个Parameters设置的按 ... -
joomla源代码探析续(二十六)JUser对象和用户权限判断
2010-04-22 14:23 1862每一个访问Joomla网站的用户都对应这一个JUser对象,通 ... -
joomla源代码探析续(二十五)JRequest对象的变量获取过程
2010-04-22 14:22 1182Joomla 1.5 RC3版本的SEF存在不少问题,前段时间 ... -
joomla源代码探析续(二十四)JPagination类
2010-04-22 14:22 1125JPagination类是Joomla的通用分页功能的封装类, ... -
Joomla源代码解析(二十二) 模块是如何被调用执行并渲染(下)
2010-04-22 14:16 951上一文章中提到了getBuffer函数,在函数中实际上调用了r ... -
模块是如何被调用执行并渲染?
2010-04-22 14:12 851以前的文章中,关于/index.php我们已经分析完了 $ma ... -
Joomla源代码解析(二十) MVC组件的执行
2010-04-22 14:10 926以前的文章中,我们曾经说过 $mainframework-&g ... -
Joomla源代码解析(十九) JController
2010-04-22 14:05 892同样 JController 是MVC中重要的起点,正式这个类 ... -
Joomla源代码解析(十八) Jview
2010-04-22 14:03 971MVC模式中,重要的一环,JView 和 tmpl目录中的模板 ... -
Joomla源代码解析(十六) JTable是什么 不指定
2010-04-22 14:01 1459JTable是什么? JTable是数据库中数据表在程序中的表 ... -
Joomla源代码解析(十五) 组件是如何被调用并渲染的
2010-04-22 14:00 1442Joomla代码中, 组件是如 ... -
Joomla源代码解析(十四) JRequest类 不指定
2010-04-22 13:58 863这是另一个Joomla扩展中最常用的类,这个类封装了客户端提交 ... -
Joomla源代码解析(十三) JText类
2010-04-22 11:25 1223Joomla 最常用的类之一,使用方式JTEXT::_('JJ ...
相关推荐
**Joomla 2.5.16 源代码详解** Joomla,作为一个开源的内容管理系统(CMS),在网站开发领域有着广泛的应用。Joomla 2.5.16 是该系统的一个版本,提供了丰富的功能和易用性,适用于构建各种类型的网站,包括企业...
本篇将深入探讨Joomla组件开发的详细过程,并结合源代码进行解析。 一、Joomla组件概述 在Joomla中,组件是最大的功能单元,它由多个部分组成,包括模型、视图、控制器、模板和语言文件等。组件开发涉及以下几个...
**Joomla代码分析** Joomla是一款非常流行的开源内容管理系统(CMS),它允许用户轻松地创建、管理和...通过深入研究和实践,开发者可以充分利用Joomla的开放源代码特性,实现各种定制化需求,创造出独具特色的网站。
9. **博客平台和CMS**:除了从头编写源代码,许多人也会选择使用WordPress、Joomla或Ghost等博客平台或内容管理系统,它们提供丰富的主题和插件,使得非程序员也能轻松搭建和管理博客。 10. **性能优化**:通过压缩...
比较详细的分析joomla1.5源码。可以对应着源码一起学习
### Joomla第三方登录开发详解 #### 一、概述 在当今互联网时代,为了提高用户体验和方便用户登录,许多网站都引入了第三方登录功能。对于使用Joomla构建的网站来说,实现第三方登录同样非常重要。本文将详细介绍...
**Joomla! 1.5 扩展开发详解** Joomla! 是一款广泛使用的开源内容管理系统(CMS),它允许用户创建、管理和维护网站而无需深入编程知识。在Joomla! 1.5版本中,扩展开发是核心特性之一,允许开发者通过编写插件、...
#### 二、Joomla! 1.5 扩展开发基础知识 ##### 1. Joomla! 简介 - **概述**:Joomla!是一款基于PHP和MySQL的开源内容管理系统,支持多种语言,广泛应用于构建企业级网站。 - **特点**:易于安装与配置;拥有丰富的...
Joomla是一款开源的内容管理系统(CMS),它允许用户创建和管理网站,而无需深入理解编程语言。在Joomla的生态系统中,组件是其核心部分,它们提供了网站的主要功能。"dj_classfilelds"是一个专为Joomla设计的分类...
这是一个开发环境,不仅集成了Joomla的插件,还有Drupal和WordPress的开发环境.可以实现Joomla类库的自动代码提示。这个是很难得的哦,很多PHP开发工具,并没有针对Joomla类库的自动...这是开发Joomla扩展的必备工具。
**Joomla 3.9.15 完全安装包及中文扩展组件详解** Joomla,作为一款全球知名的开源内容管理系统(CMS),以其强大的可扩展性和易用性深受广大网站开发者喜爱。此次提供的"Joomla 3.9.15完全安装包"包含了Joomla系统...
Joomla是一种开源的内容管理系统(CMS),它以其强大的功能和易用性在全球范围内受到广泛的欢迎。然而,尽管Joomla被公认为世界上最优秀的CMS之一,但在中国的普及和发展却面临着一些挑战。 首先,Joomla在中国的...
它的内容不仅覆盖了从基础到高级的各个层面,而且由于Joomla的源代码不断更新,书中的一些信息可能不完全准确,但这并不影响其对Joomla插件开发者的指导价值。值得一提的是,本书由Jisse Reitsma撰写,Yireo ...
**Joomla扩展:幻灯片式图片浏览** Joomla是一个流行的开源内容管理系统(CMS),它为网站开发提供了强大的工具和灵活性。"Joomla扩展(幻灯片式图片浏览)"是指专门为Joomla设计的一种组件,它增加了网站的功能,...
joomla漏洞利用代码,影响版本joomla1.5-3.4.最开始检测到利用该漏洞实施入侵的是 Securi 安全团队
【Joomla模板仿制教程第二集】是一门针对初学者的基础入门课程,旨在教会学员如何在Joomla内容管理系统中创建和定制自己的模板。Joomla是一个流行的开源CMS平台,以其灵活性和丰富的功能闻名,广泛用于构建各种类型...
源代码的分析和理解对于想要深入研究网站开发或者计划使用Joomla!构建网站的人来说非常重要。通过掌握Joomla!的架构和功能,开发者能够更高效地利用这一强大的工具,创建出满足需求的网站。同时,持续关注和学习新...