phpcms自定义模型操作数据库?
文章描述:
phpcms如何自定义模型操作数据库,可以对数据库数据进行新增、修改、删除、查询呢?
phpcms自定义模型操作数据库操作如下:
数据库操作
新建数据表
在数据库里面新建一张数据表v9_demo,数据表里面字段有id、title、listorder,数据表建好以后方便我们对数据库操作。
新建控制器文件
在phpcms/modules/admin模块下面新建一个myadmin.php文件,在头部加入判断是否定义了“IN_PHPCMS”这个静态变量,如果没定义就退出当前程序显示No permission resources和实例化admin模块类,代码如下:
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
定义文件类名和函数创建一个新的 SimpleXMLElement 对象,载入模型类文件,代码如下:
function __construct()
{
parent::__construct();
$this->db = pc_base::load_model('news_model');
}
新建模型文件
这时需要在phpcms/model/下面新建一个news_model.class.php文件,里面代码如下:
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class news_model extends model {
public $table_name = '';
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'demo';
parent::__construct();
}
}
数据库操作
在控制器里面新建一个init()方法,在方法里面首先判断是否为管理员用户
$tree = pc_base::load_sys_class('tree');
$userid = $_SESSION['userid'];
$admin_username = param::get_cookie('admin_username');
查询数据
select()
查询数据表里面所有数据
$result = $this->db->select('', '*', '', 'listorder ASC,id DESC');
$array = array();
foreach ($result as $r) {
$array[] = $r;
}
print_r($result);
get_one()
查询指定ID的一条数据
$id = 1;
$r = $this->db->get_one(array('id'=>$id));
insert()
向数据库里面插入数据
$datas = array(
'title'=>'hello'
);
$this->db->insert($datas);
update()
修改指定ID文章的内容
$data = array(
'title'=>'hello',
'listorder'=>'1'
);
$this->db->update($data,array('id'=>$id));
delete()
指定ID删除文章内容
$this->db->delete(array('id'=>2));
phpcms如何获取数据表名
echo $table_name = $this->db->table_name;
echo "<hr>";
echo $this->db->table_name.'_data';
自定义分页多表
phpcms自定义模型查询多表分页代码如下:
模型
自定义分页多表查询,将会在phpcms/model/下面get_model.class.php里面新增自定义多表查询方法,代码如下:
public function multi_listinfo($where = '', $page = 1, $pagesize = 12, $key='', $setpages = 10,$urlrule = '',$array = array()) {
$sql = preg_replace('/select([^from].*)from/i', "SELECT COUNT(*) as count FROM ", $where);
// echo $sql;
$this->sql_query($sql);
$c = $this->fetch_next();
$this->number = $c['count'];
$page = max(intval($page), 1);
$offset = $pagesize*($page-1);
$this->pages = pages($this->number, $page, $pagesize, $urlrule, $array, $setpages);
//分页
$r = $this->sql_query($where.' LIMIT '.$offset.','.$pagesize);
while(($s = $this->fetch_next()) != false) {
$data[] = $s;
}
return $data;
}
控制器
在phpcms/modules/admin/myadmin.php控制器里面添加自定义查询表语句、分页、指定模板
$keyword = '';
//这里是查询条件采用下面的多表联合查询
$where = " WHERE a.title like '%".$keyword."%'" ;
$where .= " OR c.title like '%".$keyword."%'" ;
//这里用到了left join查询
$sql = "SELECT a.id,a.title,b.id AS bid,c.title AS ctitle FROM v9_news as a LEFT JOIN v9_news_data as b ON a.id = b.id ";
//
$sql .= " LEFT JOIN v9_demo as c ON a.id = c.id";
//
$order = " order by a.id desc";
$sql= $sql.$where.$order;
//引入第一步修改的get_model.class.php文件
$get_db = pc_base::load_model('get_model');
//在get_model.class里面定义的multi_listinfo方法
$page = intval($_GET['page'])?intval($_GET['page']) :'1';
$infos = $get_db->multi_listinfo($sql,$page,$pages = '1');
//返回查询结果
$pages = $get_db->pages;
//返回分页
// var_dump($infos);
// var_dump($pages);
// echo $this->admin_tpl('myadmin');
include $this->admin_tpl('myadmin');
模板
在phpcms/modules/admin/templates/下面新增一个myadmin.tpl.php文件,代码如下:
<?php
if(is_array($infos)){
foreach($infos as $info){
?>
<tr>
<td><?php echo $info['title'];?></td>
<td><?php echo $info['bid'];?></td>
<td><?php echo $info['ctitle'];?></td>
</tr>
<?php
}
}
?>
<div id="pages"> <?php echo $pages?></div>
发表评论