codecamp

tpframe之查询数据

查询数据实际上已经有了

一、控制器

在控制器里面添加index方法

<?php namespace app\frontend\controller; use \tpfcore\Core; class User extends FrontendBase { public function add() { IS_POST && $this->jump(Core::loadModel($this->name)->saveUser($this->param)); return $this->fetch("add"); } public function edit(){ IS_POST && $this->jump(Core::loadModel($this->name)->editUser($this->param)); return $this->fetch("edit",[ "list"=>Core::loadModel($this->name)->listUser($this->param) ]); } public function del(){ $this->jump(Core::loadModel($this->name)->delUser($this->param)); } public function index(){ return $this->fetch("index",[ "list"=>Core::loadModel($this->name)->listUser([ "order"=>"id desc" "paginate" => ['rows' => 30] ]) ]); } }

就这么简单就实现了查询的操作,那分页怎么办呢?不急,直接在视图里面须要显示分页的地方加入{$list->render()}就可以了

注意这里要实现分页,必须传递paginate参数,并指定每页显示多少条

具体实现用的是Bootstrap类里面的render方法实现的

/**

  • 渲染分页html
  • @return mixed */ public function render() { if ($this->hasPages()) { if ($this->simple) { return sprintf( '<ul class="pager">%s %s</ul>', $this->getPreviousButton(), $this->getNextButton() ); } else { return sprintf( '<ul class="pagination">%s %s %s</ul>', $this->getPreviousButton(), $this->getLinks(), $this->getNextButton() ); } } }

二、服务层

<?php // +---------------------------------------------------------------------- // | Author: yaoyihong <510974211@qq.com> // +---------------------------------------------------------------------- namespace app\frontend\service;


use app\common\service\ServiceBase;
use \tpfcore\Core;
/**
 * 基础服务
 */
class User extends FrontendBase
{
    public function editUser($data){
        // 在进行数据操作前进行数据验证
        $validate=\think\Loader::validate($this->name);
        $validate_result = $validate->scene('edit')->check($data);
        if (!$validate_result) {    
            return [RESULT_ERROR, $validate->getError(), null];
        }
        return Core::loadModel($this->name)->saveObject($data);
    }
    public function listUser($data){
        return Core::loadModel($this->name)->listUser($data);
    }
}

三、查询的其它操作

1、getStatistics ($where = [], $stat_type = 'count', $field = 'id')

聚合函数-统计数据

例如:self::getStatistics(["status"=>0]); //统计正常用户有多少

2、array getColumns($where = [], $field = '', $key = '')

得到某个列的数组

3、mixed getColumnValue($where = [], $field = '', $default = null, $force = false)

得到某个字段的值

4、getOneObject($where = [], $field = true)

查找单条记录,返回的是一维数组

5、getList($param=[])

获取数据

注意:只有通过此查询的数据才有可能进行数据缓存,默认参数如下

[ "where" =>[], "field" =>true, "order" =>"", "paginate" =>['rows' => null, 'simple' => false, 'config' => []], "join" =>['join' => null, 'condition' => null, 'type' => 'INNER'], "group" =>['group' => '', 'having' => ''], "limit" =>null, "data" =>null, "expire"=>0 ]

tpframe之修改数据
tpframe 插件规范
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

tpframe 数据库说明

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }