{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再传进来就可以实现相应的功能了