增加模型基类,便于扩展和重写方法。

pull/83/head
yhf320 2018-11-07 09:53:02 +08:00
parent dca32b0a13
commit 2433a367ab
1 changed files with 99 additions and 0 deletions

View File

@ -0,0 +1,99 @@
<?php
namespace app\common\model;
use think\Model;
/**
* 基类模型
*
*/
class Base extends Model
{
public function initialize() {
parent::initialize();
// ...
}
// 通用方法或重写方法
/**
* 解析信息详情传入参数
* @param unknown $params
* @return \app\common\model\Base
*/
public function infoConditions($params=null) {
if( isset($params['where']) && $params['where'] ) {
$this->where($params['where']);
}
if( isset($params['extra_where']) && $params['extra_where']) {
$this->where($params['extra_where']);
}
if( isset($params['field']) && $params['field'] ) {
$this->field($params['field']);
}
return $this;
}
/**
* 解析列表传入参数
* @param string $params
* @return \app\common\model\Base|number
*/
public function listConditions($params)
{
if( isset($params['where']) && $params['where'] ) {
$this->where($params['where']);
}
if( isset($params['extra_where']) && $params['extra_where']) {
$this->where($params['extra_where']);
}
$total = $this->count();
if( isset($params['get_count']) && $params['get_count'] ) {
return $total;
}
if( isset($params['where']) && $params['where'] ) {
$this->where($params['where']);
}
if( isset($params['extra_where']) && $params['extra_where']) {
$this->where($params['extra_where']);
}
if( isset($params['field']) && $params['field'] ) {
$this->field($params['field']);
}
if( isset($params['sort']) && $params['sort'] && isset($params['sort']) && $params['order'] ) {
$this->order($params['sort'], $params['order']);
}
if( isset($params['offset']) && $params['offset'] < 0 ) {
$params['offset'] = 0;
}
if( isset($params['limit']) && $params['limit'] > 0 ) {
$this->limit($params['offset'], $params['limit']);
} else {
if( isset($params['group']) && $params['group'] ) {
$this->group($params['group']);
}
}
return ['total'=>$total,'model'=>$this];
}
/**
* 格式化列表
* @param unknown $list
* @param unknown $format ['key_value'=>'id','key_list'=>false] 当key_value存在必须为唯一值例idkey_list为真列表键值按此字段 ,否则返回原列表
* @return array|unknown|unknown[]|unknown
*/
public function formatList($list,$format) {
if(!$list) {
return [];
}
$newList = [];
if( isset($format['key_value']) && $format['key_value'] ) {
foreach ($list as $val) {
$newList[$val[$format['key_value']]] = $val;
}
unset($val);
}
if( isset($format['key_list']) && $format['key_list'] ) {
return $newList ?? $list;
}
return $list;
}
}