模型定义
定义一个模型类很简单,例如下面是一个User模型:
<?php if (!defined('ROOT_PATH')) exit('No Permission');
/**
* 用户基本信息模型
*
* @category Framework
* @package Model
* @author Xinze <i@xinze.me>
* @copyright Copyright (c) 2016-10-14, Xinze
* @version 1.0
* @todo
*/
class User_BaseModel extends Zero_Model
{
public $_cacheName = 'user';
public $_tableName = 'user_base';
public $_tablePrimaryKey = 'user_id';
public $_useCache = false;
public $_useListCache = true;
public $fieldType = array(
'rights_group_id' => 'DOT',
'store_ids' => 'DOT',
'chain_ids' => 'DOT'
);
/**
* 默认key = $this->_tableName . '_cond'
* @access public
*/
public $_multiCond = array(
'user_base_cond' => array(
'user_account' => null,
'user_nickname' => null,
'user_token' => null,
'user_state' => null,
'user_is_admin' => null,
'store_id' => null,
'user_id' => null,
'user_quickcode' => null,
)
);
public $_validateRules = array(
'integer' => array(
'user_id',
'user_state'
)
);
public $_validateLabels = array();
/**
* @param string $user User Object
* @return void
* @var string $db_id 指定需要连接的数据库Id
*/
public function __construct(&$db_id = 'account', &$user = null)
{
$this->_useCache = CHE;
$this->_tabelPrefix = TABLE_ACCOUNT_PREFIX;
parent::__construct($db_id, $user);
}
}
请确保你已经在数据库配置文件中配置了数据库连接信息,如不清楚请参考数据库一章, 模型构造函数中
$db_id
需要和数据库连接配置信息匹配
模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如:
模型名 | 约定对应数据表(假设数据库的前缀定义是 shop_) |
---|---|
User_BaseModel | shop_user_base |
User_LoginHistoryModel | shop_user_login_history |
常用的模型设置属性包括(以下属性都不是必须设置):
属性 | 描述 |
---|---|
_cacheName | 缓存配置名称 |
_tableName | 模型对应的表明 |
_tablePrimaryKey | 表的主键 |
_useCache | 是否启用缓存 |
_useListCache | 是否启用列表查询缓存 |
fieldType | 表字段数据格式定义 DOT-逗号风格;JSON-JSON字符串;HTML-存储HTML内容;SOURCE-不过滤HTML字符串而直接存入 |
_multiCond | 表字段是否可以作为where条件去查询数据 |
模型中可用方法:
<?php
/**
* 插入 - 可以传入二维数据一次添加多条记录 插入多条记录 实现批量插入数据
* @param array $field_row 信息
* @param bool $return_insert_id 是否返回自增主键
* @param bool $replace 是否数据覆盖
* @return bool 是否成功
* @access public
*/
public function add($field_row, $return_insert_id=false, $replace=false)
{
}
/**
* 保存内容,insert|update 可以传入二维数据一次添加或者编辑多条记录, 如果有主键则编辑,否则添加
* @param array $field_row key=>value数组
* @param bool $return_insert_id 自增主键
* @param bool $flag 是否增量更新
* @return bool $update_flag 是否成功
* @access public
*/
public function save($field_rows, $return_insert_id=false, $flag=false)
{
}
/**
* 传入主键删除操作
* @param mix $table_primary_key_value
* @return bool $del_flag 是否成功
* @access public
*/
public function remove($table_primary_key_value)
{
}
/**
* 根据条件删除操作, 如果存在主键,使用remove
* @param mix $table_primary_key_value
* @return bool $del_flag 是否成功
* @access public
*/
public function removeCond($column_row=array())
{
}
/**
* 根据主键更新表内容
* @param mix $table_primary_key_value 主键
* @param array $field_row key=>value数组
* @param bool $flag 是否增量更新
* @param array $field_old_row key=>value数组
* @return bool $update_flag 是否成功
* @access public
*/
public function edit($table_primary_key_value=null, $field_row, $flag=null, $field_old_row=null)
{
}
/**
* 是否增量更新 edit 别名
* @param mix $table_primary_key_value
* @param array $field_value_new
* @param array $field_value_old
* @return bool $update_flag 是否成功
* @access public
*/
public function editInc($table_primary_key_value=null, $field_row, $field_old_row=null)
{
}
/**
* 根据条件更新表内容
*
* @param array $column_row 条件
* @param array $field_row key=>value数组
* @param bool $flag 是否增量更新
* @param array $field_old_row key=>value数组
* @return bool $update_flag 是否成功
* @access public
*/
public function editCond($column_row=array(), $field_row, $inc_flag=null, $field_old_row=null)
{
}
/**
* 只获取一条记录
*
* @param int $table_primary_key_value 主键值
* @return array $rows 返回的查询内容
* @access public
*/
public function getOne($table_primary_key_value=null, $key_row=null, $sort_row=array())
{
$row = array();
$rows = $this->get($table_primary_key_value, $key_row, $sort_row);
if ($rows)
{
$row = reset($rows);
}
return $row;
}
/**
* 根据主键值,从数据库读取数据, 必须获取主键后再读取数据
*
* @param int $table_primary_key_value 主键值
* @return array $rows 返回的查询内容
* @access public
*/
public function get($table_primary_key_value=null, $key_row=null, $sort_row=array())
{
}
/**
* 取得影响的行数
*
* @return int $num 行数
* @access public
*/
public function getFoundRows()
{
$num = $this->_selectFoundRows();
return $num;
}
/**
* 获取数据记录行数, cache 清除太多,不合理. 组名称,是否根据用户id来处理.特列下允许使用, 正常通过数据库来存储冗余统计数据
*
* @param array $cond_row
* @param string $group
* @param bool $cache_flag 是否启用cache
* @return int
* @access public
*/
public function getNum($cond_row, $group=null, $cache_flag=false)
{
}
/**
* 读取分页列表, find根据条件获取数据, 而get根据id获取数据
*
* @param int $column_row where查询条件, 需要设置在multiCond中, 方便处理为group名字,用来通过组更新缓存
* @param string $group 组名称
* @param int $page 当前页码
* @param int $rows 每页显示记录数
* @param int $sort_row 排序方式
* @return array $rows 返回的查询内容
* @access public
*/
public function find($column_row=array(), $sort_row=array(), $page=1, $page_num=500, $group=null, $cache_flag=false)
{
}
public function findOne($column_row=array(), $sort_row=array(), $page=1, $page_num=1, $group=null, $cache_flag=false)
{
}
/**
* 根据where条件取得主键
*
* @param array $cond_row
* @param array $sort_row
* @param int $page
* @param string $group
* @param bool $cache_flag
* @return array $rows 信息
* @access public
*/
public function findKey($cond_row=array(), $sort_row=array(), $page=1, $page_num=500, $group=null, &$total=0, $cache_flag=false)
{
}
/**
* 读取分页列表Id
*
* @param int $column_row where查询条件, 需要设置在multiCond中
* @param int $sort_row array('key'=>'ASC|DESC')排序方式
* @param int $page 当前页码
* @param int $rows 每页显示记录数
* @param string $group 组名称
* @param bool $cache_flag 是否缓存
* @param bool $array_flag 是否使用array_value处理返回的items
* @return array $rows 返回的查询内容
* @access public
*/
public function listKey($column_row=array(), $sort_row=array(), $page=1, $page_num=500, $group=null, $cache_flag=false, $array_flag=true)
{
$data = array();
$data['page'] = $page;
$data['total'] = $total; //total page
$data['records'] = $records;
$data['items'] = $array_flag ? array_values($data['items']) : $data['items'];
return $data;
}
/**
* 读取分页列表
*
* @param int $column_row where查询条件, 需要设置在multiCond中, 方便处理为group名字
* @param int $sort_row 排序方式
* @param int $page 当前页码
* @param int $rows 每页显示记录数
* @param string $group 组名称
* @param bool $cache_flag 是否缓存
* @param bool $array_flag 是否使用array_value处理返回的items
* @return array $rows 返回的查询内容
* @access public
*/
public function lists($column_row=array(), $sort_row=array(), $page=1, $page_num=500, $group=null, $cache_flag=false, $array_flag=true)
{
$data = array();
$data['page'] = $page;
$data['total'] = ceil_r($total / $page_num); //total page
$data['records'] = $total;
$data['items'] = $array_flag ? array_values($data['items']) : $data['items'];
return $data;
}
?>
文档更新时间: 2020-05-28 17:43 作者:随商信息技术(上海)有限公司