1. 程式人生 > >Yii1.1 批量處理(新增、刪除、修改)

Yii1.1 批量處理(新增、刪除、修改)

$model = new UebEbayAccountNotice();
$transaction = $model->getDbConnection()->beginTransaction();

新增

//差集,需要增加的
$addUserIdArr = array_diff($newUserIdArr,$oldUserIdArr);
if (!empty($addUserIdArr)){
	$addDataArr = [];
	foreach ($addUserIdArr as $k=>$addId){
		$addDataArr[$k]['user_id'] = $addId;
		$addDataArr[$k]['notice_type'] = $data['notice_type'];
		$addDataArr[$k]['days_type'] = $data['days_type'];
		$addDataArr[$k]['is_active'] = $data['is_active'];
		$addDataArr[$k]['add_time'] = time();
	}
	$keyArr = ['user_id','notice_type','days_type','is_active','add_time'];
	$flag = $model->batchInsertAll($model->tableName(),$keyArr,$addDataArr);
}

刪除

//差集,需要刪除的
$delUserIdArr = array_diff($oldUserIdArr,$newUserIdArr);
if (!empty($delUserIdArr)){
	$condition = 'user_id in ('.implode(",",$delUserIdArr).') and is_active='.$isactive;
	$flag = $model->deleteAll($condition);
}

修改

$model->updateAll($attributes,$condition,$params); 
//交集,需要修改的
$updUserIdArr = array_intersect($oldUserIdArr,$newUserIdArr);
if (!empty($updUserIdArr)){
	$attributes = ['notice_type'=>$data['notice_type'],'days_type'=>$data['days_type'],'is_active'=>$data['is_active']];
	$condition = 'user_id in ('.implode(",",$updUserIdArr).') and is_active='.$isactive;
	$flag = $model->updateAll($attributes,$condition);
}

單個修改

$model = User::model()->findByPk($pk)
 $model->is_deleted = 1;
 $model->update(['is_deleted']);

#updateByPk($pk,$attributes,$condition,$params);
#$pk主鍵,可以是一個也可以是一個集合,$attributes是要修改的欄位的集合,$condition條件,$params傳入的值
$count=Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin'));
 $count=Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'張三'));

#自增:updateCounters($counters,$condition,$params); 
array('status'=>1)代表資料庫中的admin表根據條件username='admin',查詢出的所有結果status欄位都自加1

事務

$transaction->commit();
$transaction->rollback();