1、模型
模型表(存放生产的表信息)
创建模型就是创建一个新的表
2、栏目管理
用于关联模型、栏目、视图的表
3、内容管理
根据栏目添加相关模型表的内容、表单自生成
<?php
//用于查看特定表的详细设计信息
//desc 是 describe的缩写
//describe用于查看特定表的详细设计信息
//describe($tablename)
//查询出表的列信息
//show_columns_from($tablename)
//这个是查询建表语句
//show_create_table($tablename)
//删除字段
//alter_table_drop($tablename, $field)
//修改字段
//alter_table_change($tablename, $oldfield, $newfield, $field_type, $isnot, $as)
/* 修改字段
* * $tablename 表名
* $field 字段名
* $field_type 字段类型
* $isnot 是否为空
* $as 字段注释
*
添加字段alter_table_add($tablename, $field, $field_type, $isnot, $as)
$tablename 表名
$field 字段名
$field_type 字段类型
$isnot 是否为空
$as 字段注释
删除表 drop_table($oldtablename)
修改表名create_table($oldtablename, $newtablename)
创建表 create_table($tablename, $as)
*/
class DbExtension
{
/**
* 批量更新函数
* @param $data array 待更新的数据,二维数组格式
* @param $table string 更新的表名
* @param string $field string 值不同的条件,默认为id
* @param array $params array 值相同的条件,键值对应的一维数组
* @return bool|string
*/
public function batchUpdate($data=[],$table='user',$field="id")
{
if(count($data)==0 || empty($table)) return "" ;
//获取所有的id
$data_keys = array_keys($data);
$col = Db::query("SHOW COLUMNS FROM `".$table."`");
$cols = [];
array_map(function($value) use(&$cols){
$cols[] = $value['Field'];
},$col);
//拼接批量更新sql语句
$sql = "UPDATE {$table} SET ";
//合成sql语句
foreach ($data[$data_keys[0]] as $key => $value) {
if(!in_array($key,$cols)) continue;
$sql .= "{$key} = CASE ".$field." ";
foreach ($data as $k=>$v) {
$str= $v[$key];
$needle= '+';
$pos = strpos($str, $needle);
if($pos){
$z=explode("+",$v[$key]);
$sql .= sprintf("WHEN %d THEN '%s'+ %e", $k, $z[0],floatval($z[1]));
}else{
$sql .= sprintf("WHEN %d THEN '%s' ", $k, $v[$key]);
}
}
$sql .= "END, ";
}
//把最后一个,去掉
$sql = substr($sql, 0, strrpos($sql,','));
//合并所有id
$ids = implode(',', $data_keys);
//拼接sql
$sql .= " WHERE ".$field." IN ({$ids})";
return $sql;
// dump($userModel->execute($sql));
}
//距离排序 字段生成
public function latlngfield($lat, $lng,$latfield="lat", $lngfield="lng", $returnfield="juli") {
$sql=" ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( ";
$sql.= $lat." * PI() / 180 - ".$latfield." * PI() / 180 ) / 2 ), 2 ) + COS( ";
$sql.= $lat." * PI() / 180) * COS( ".$latfield." * PI() / 180) * POW( SIN( ( ";
$sql.= $lng." * PI() / 180 - ". $lngfield." * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS " .$returnfield."";
return $sql;
}
//创建表
public function create_table($tablename, $as) {
$sql = "create table " . $tablename;
$sql .= " (id int not null auto_increment,typeid varchar(40) not null comment '类别id', ";
$sql .= "creationtime int(10) not null comment '创建时间',updatetime int(10) not null comment '更新时间' ,";
$sql .= "primary key ( id ))auto_increment = 1 engine=MyISAM default charset=utf8 COMMENT='" . $as . "'";
Db::query($sql);
}
//修改表名
public function create_table($oldtablename, $newtablename) {
$sql = "rename table " . $oldtablename . " to " . $newtablename . "";
Db::query($sql);
}
//删除表
public function drop_table($oldtablename) {
$sql = "drop table " . $oldtablename;
Db::query($sql);
}
/*
* 添加字段
* $tablename 表名
* $field 字段名
* $field_type 字段类型
* $isnot 是否为空
* $as 字段注释
* */
public function alter_table_add($tablename, $field, $field_type, $isnot, $as) {
$sql = "alter table " . $tablename . " add " . $field . " " . $field_type . " " . $isnot . " " . " comment '" . $as . "'";
Db::query($sql);
}
//修改字段
/* 修改字段
* * $tablename 表名
* $field 字段名
* $field_type 字段类型
* $isnot 是否为空
* $as 字段注释
* */
public function alter_table_change($tablename, $oldfield, $newfield, $field_type, $isnot, $as) {
$sql = "alter table " . $tablename . " change " . $oldfield . " " . $field . " " . $field_type . " " . $isnot . " comment '" . $as . "'";
Db::query($sql);
}
//删除字段
public function alter_table_drop($tablename, $field) {
$sql = "alter table " . $tablename . " drop column " . $field;
Db::query($sql);
}
//用于查看特定表的详细设计信息
//desc 是 describe的缩写
//describe用于查看特定表的详细设计信息
public function describe($tablename) {
$sql = "describe " . $tablename;
Db::query($sql);
}
//查询出表的列信息
public function show_columns_from($tablename) {
$sql = "show columns from " . $tablename;
Db::query($sql);
}
//这个是查询建表语句
public function show_create_table($tablename) {
$sql = "show create table " . $tablename;
Db::query($sql);
}
//这个是查询建表语句
public function show_create_table($tablename) {
$sql = "show create table " . $tablename;
Db::query($sql);
}
}