/**
*通用添加
*@param string $table 表名
*@param array $arr 用于在表单创建以后再添加额外的数据
*@param bool $trans 是否将写库过程启用事务 true false 默认为False
*@param $transData array 事务数据包
*/
public function do_add($table,$arr=null,$trans = false ,$transData = null){
$db = D("$table");
if($db->create()){
if(is_array($arr)){
foreach ($arr as $key=>$val){
$db->$key=$val;
}
}
}else{
return $db->getError();
}
if($trans){
$db->startTrans();//开启事务
$i =(int)1;
$status[$i] = $db->add();//主进程
if($status[$i]){
//主进程成功之后进行子进程
$count = count($transData);//子进程的数量
foreach($transData as $k=>$v){
if(is_array($v['data'])){
foreach($v['data'] as $a=>$c){
$b[$a] = str_replace(replace,$status[$i],$c);//引用上一进程的返回值
if(is_array($b[$a])){
$b[$a] = implode(',', $b[$a]);
}
}
$v['data'] = $b;
}
if($v['type'] == 'add'){//新增数据
$status[$i] = D(ucwords($v['table']))->add($v['data']);
}else{//更新数据
$status[$i] = D(ucwords($v['table']))->where($v['map'])->save($v['data']);
}
if($status[$i] == false){
//回滚任务
$db->rollback();
return false;
}
if($count == $k+1){
$db->commit();//提交事务
return true;
}
$i++;
}
}else{
$db->rollback();
return false;
}
} else {
$status=$db->add();
return $status;
}
}
/**
*通用更新
*@param string $table 表名
*@param bool $trans 是否将写库过程启用事务 true false 默认为False
*@param $transData array 事务数据包
*$transData=array(
* 'type' =>'add',//'save'
* 'table' =>'',
* 'map' =>array(),
* 'data' =>array(
* 'id' => $status,//引用上一进程的返回数据
* ),
*);
*/
public function do_up($table,$trans = false ,$transData = null){
$db = D("$table");
if($trans){
if($db->create()){
$db->startTrans();//开启事务
$i =(int)1;
$status[$i]=$db->save();
if($status[$i]){
//主进程成功之后进行子进程
$count = count($transData);//子进程的数量
foreach($transData as $k=>$v){
if(is_array($v['data'])){
//引用上一进程的返回值
foreach($v['data'] as $a=>$c){
$b[$a] = str_replace(replace,$status[$i],$c);
if(is_array($b[$a])){
$b[$a] = implode(',', $b[$a]);
}
}
$v['data'] = $b;
}
if($v['type'] == 'add'){//新增数据
$status[$i] = D(ucwords($v['table']))->add($v['data']);
}else{//更新数据
$status[$i] = D(ucwords($v['table']))->where($v['map'])->save($v['data']);
}
if($status[$i] == false){
//回滚任务
$db->rollback();
return false;
}
if($count == $k+1){
return true;
$db->commit();//提交事务
}
$i++;
}
}else{
$db->rollback();
return false;
}
}else{
return $db->getError();
}
}else{
if($db->create()){
$status=$db->save();
return $status;
}else{
return $db->getError();
}
}
}
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。