phpcms v9多表查询
在用phpcms做二次开发的时候就难免不用到多表查询。phpcms提供了一个很好标签给我们合用,那就是get标签,具体用法如下。{pc:get sql="SELECT title,url FROM v9_news where catid=9 and status=99 order by updatetime desc" start="0" num="4" return="v"}
get标签可以直接写sql查询语句,这个可以根据需求去自由发挥。start为开始数据,num是返回几条数据。return 为返回的数据。
但如果要在程序中实现多表查询怎么办,那就只接可以用$this->db->query($sql)来取得相应的数据。
要是碰到多表的分页查询用query就满足不了相应的功能了,我的做法是改libs/classes/model.class.php,重写listinfo()方法。
/** * 查询多条数据并分页 * @param $where * @param $order * @param $page * @param $pagesize * @return unknown_type */final public function mylistinfo($table='',$where = '', $order = '', $page = 1, $pagesize = 20, $key='', $setpages = 10,$urlrule = '',$array = array()) {$where = to_sqls($where);$this->number = $this->count($where);$page = max(intval($page), 1);$offset = $pagesize*($page-1);$this->pages = pages($this->number, $page, $pagesize, $urlrule, $array, $setpages);$array = array();if ($this->number > 0) {return $this->myselect($table,$where, '*', "$offset, $pagesize", $order, '', $key);} else {return array();}} /** * 执行sql查询 * @param $where 查询条件[例`name`='$name'] * @param $data 需要查询的字段值[例`name`,`gender`,`birthday`] * @param $limit 返回结果范围[例:10或10,10 默认为空] * @param $order 排序方式[默认按数据库默认方式排序] * @param $group 分组方式[默认为空] * @param $key 返回数组按键名排序 * @return array查询结果集数组 */final public function myselect($table='',$where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') {if (is_array($where)) $where = $this->sqls($where);return $this->db->select($data, $table, $where, $limit, $order, $group, $key);}
如上所示,与系统自带的就是多传了个$table,这样我们可以把要查询的多表写成view再传进来就可以实现相应的功能了
页:
[1]