经过前几篇文章的工作,我们已经完成了一个后台的分页列表显示,所及即所得的记录添加删除和修改的功能。本篇文章,我们来展示一下,如何处理数据表结构的变化。回过头来,我们再看看我们已经创建的数据表,我们发现没有上传时间,而这一项对于用户来说是一项有价值的参考数据,现在我们就来增加一项数据 uptime,因为我习惯用整数来表示时间,所以这里还是设置为整数。
第一步,数据表增加字段,用你习惯工具,我用mysql client ,登录,执行:
alter table add column uptime int(11) default 0;
执行后,数据表增加了一列。
第二步,修改 tables目录下的showcase.php 增加一行:
var $uptime=null;
第三步,修改 model目录下的showcase.php
在getData 函数中增加一行:
$this->_data->uptime=null;
在store函数,bind details 之前一行,增加:
$details['uptime']=time();
我们去记录保存的时间作为上传的时间。
现在,我们就完成了一个字段的增加,非常简单。
修改后的 model目录下的showcase.php 的store函数,和getData函数如下:
function &getData()
{
if (empty( $this->_data )) {
$query = ' SELECT * FROM #__showcase '.
' WHERE id = '.$this->_id;
$this->_db->setQuery( $query );
$this->_data = $this->_db->loadObject();
}
if (!$this->_data) {
$this->_data = new stdClass();
$this->_data->id=0;
$this->_data->catid=null;
$this->_data->title=null;
$this->_data->description=null;
$this->_data->imgfilename=null;
$this->_data->imgthumbname=null;
$this->_data->urlhome=null;
$this->_data->urldemo=null;
$this->_data->urldownload=null;
$this->_data->license=null;
$this->_data->rank=null;
$this->_data->developer=null;
$this->_data->email=null;
$this->_data->version=null;
$this->_data->hits=null;
$this->_data->downloads=null;
$this->_data->uptime=null;
}
return $this->_data;
}
function store() {
$row =& $this->getTable();
$id = JRequest::getVar('id');
$details = JRequest::getVar( 'details', array(), 'post', 'array');
$details['uptime']=time();
if (!$row->bind($details)) {
$this->setError($this->_db->getErrorMsg());
return false;
}
if(intval($id)>0){
$row->id= $id;
}
if (!$row->check()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
if (!$row->store()) {
$this->setError( $row->getErrorMsg() );
return false;
}
return true;
}
这样我们就完成了给数据表增加一列字段。