1.使用事务添加数据:

   public function create()
{
if($this->validate()) {
$trans = Yii::$app->db->beginTransaction();
$admin = new Admin();
try {
$admin->setAttributes($this->getAttributes());
$admin->status = Admin::STATUS_ACTIVED;
$admin->password_hash = Yii::$app->security->generatePasswordHash($this->password);
$admin->created_at = time();
$admin->updated_at = time();
$admin->profile_id = $this->createProfile()->id;
if($admin->save()) {
$trans->commit();
return true;
} $error = '';
foreach ($admin->errors as $es) {
foreach ($es as $e) {
$error .= ($e."<br />");
}
}
Yii::$app->session->setFlash('error', $error);
return false;
} catch (Exception $e) {
Yii::$app->session->setFlash('error', $e->getMessage());
$trans->rollBack();
return false;
}
} else {
$error = '';
foreach ($this->errors as $es) {
foreach ($es as $e) {
$error .= ($e."<br />");
}
}
Yii::$app->session->setFlash('error', $error);
return false;
} }

  2.分类的集合管理类:

class Category {
// 组合一维数组
static public function unlimitedForLevel ($cate, $parent='pid', $html = '----', $suffix = '|', $pid = null, $level = 0) {
$arr = array();
foreach ($cate as $v){
if($v[$parent] == $pid){
$v['level'] = $level + 1;
$v['prefix'] = str_repeat($html, $level) . ($level ? $suffix : '');
$arr[] = $v;
$arr = array_merge($arr, self::unlimitedForLevel($cate, $parent, $html, $suffix, $v['id'], $level + 1));
}
}
return $arr;
} // 组合多位数组
static public function unlimitedForLayer($cate,$name='child', $pid = 0) {
$arr = array();
foreach ($cate as $v){
if($v['pid'] == $pid){
$v[$name] = self::unlimitedForLayer($cate, $name, $v['id']);
$arr[] = $v;
}
}
return $arr;
} // 传递一个子分类ID返回所有的父级分类
static public function getParents($cate, $id){
$arr = array();
foreach ($cate as $v){
if($v['id'] == $id){
$arr[] = $v;
$arr = array_merge(self::getParents($cate, $v['pid']), $arr);
}
}
return $arr;
} // 传递一个父级分类ID返回所有的子级分类
static public function getChilds($cate, $pid, $name='child'){
$arr = array();
foreach ($cate as $v){
if($v['pid'] == $pid){
$v[$name] = self::getChilds($cate, $v['id'], $name);
$arr[] = $v;
}
}
return $arr;
} // 传递一个父级分类ID返回所有的子级ID
static public function getChildsId($cate, $pid){
$arr = array();
foreach ($cate as $v) {
if($v['pid'] == $pid){
$arr[] = $v['id'];
$arr = array_merge($arr, self::getChildsId($cate, $v['id']));
}
}
return $arr;
}
}

  

Yii2框架 常用函数整合的更多相关文章

  1. 【转】JS常用函数整合库 lutils

    lutils 此工具包是在 outils 的基础上,加上个人平时收集的代码片段进行的二次整合 outils的GitHub:https://github.com/proYang/outils/blob/ ...

  2. CI框架常用函数(AR数据库操作的常用函数)

    用户手册地址:http://codeigniter.org.cn/user_guide/index.html 1.查询表记录$this->db->select(); //选择查询的字段$t ...

  3. Yii2框架---常用代码

    一.Php控制器跳转 return $this->redirect('/site/index/index');   二.回调自身控制器 self::actionXxxx();   三.获取当前用 ...

  4. 十分钟能学会的框架,MVC+20个常用函数

    LazyPHP(以下简称LP)是一个轻框架. 之所以开发这么一个框架,是因为其他框架给的太多.在高压力的情况下,ORM和盘根错节的对象树反而将简单的页面请求处理复杂化,在调试和性能上带来反面效果. L ...

  5. 【Vue】Vue框架常用知识点 Vue的模板语法、计算属性与侦听器、条件渲染、列表渲染、Class与Style绑定介绍与基本的用法

    Vue框架常用知识点 文章目录 Vue框架常用知识点 知识点解释 第一个vue应用 模板语法 计算属性与侦听器 条件渲染.列表渲染.Class与Style绑定 知识点解释 vue框架知识体系 [1]基 ...

  6. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  7. Yii2框架实现计数器功能

    思路: 因为yii2框架没有像tp框架那样的setinc这样的累加函数,所以只能在每次累加之前查出当前的这个字段的值,然后写算法累加入库 例如:

  8. Yii2框架与MongoDB拓展、Redis拓展的安装流程

    @author 周煦辰 2016-03-21 这段时间新上了一个项目,使用的是Yii2框架.这里记录一下Yii2框架.Yii2-Mongo拓展.Yii2-Redis拓展等的安装流程.因为使用的系统是W ...

  9. 《深入解剖Yii2框架》前言

    写代码需要站在巨人的肩膀上,将主要精力集中在自己所需要实现的业务上面,避免反复搭建基础服务,重复造轮子.PHP框架就是这样一些巨人的"肩膀",使得我们"站"得更 ...

随机推荐

  1. Win系统如何修改远程桌面端口3389

    Win系统如何修改远程桌面端口3389: https://jingyan.baidu.com/article/ce43664928d5293773afd39b.html window10远程桌面连接: ...

  2. oracle 启动

    Oracle数据库启动过程及状态详解(nomount.mount和open) 先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数 ...

  3. 嵌入式Linux学习---进程(1)

    什么是一个进程?当用户敲入命令执行一个程序的时候,对系统而言,它将启动一个进程.但和程序不同的是,在这个进程中,系统可能需要再启动一个或多个进程来完成独立的多个任务.多进程编程的主要内容包括进程控制和 ...

  4. java.awt.Font

    显示效果 Font mf = new Font(String 字体,int 风格,int 字号);字体:TimesRoman, Courier, Arial等风格:三个常量 lFont.PLAIN, ...

  5. git 基本操作小节操作(一) init clone status add 未完,参考链接在末尾

    1 $ git init 对当前所在目录进行git 管理 在当前目录初始化新仓库 2 $ git clone <url> <position> 从url克隆一个仓库到posti ...

  6. Linux上安装nodejs

    https://github.com/nodejs/node-v0.x-archive/wiki/Installing-Node.js-via-package-manager#debian-and-u ...

  7. 每天进步一点点------Allegro PCB

    Allegro PCB 1.如何在allegro中取消花焊盘(十字焊盘) set up->design parameter ->shape->edit global dynamic ...

  8. 虚拟机安装的ubuntu不能联网解决

    安装双系统从没遇到的问题,再虚拟机上遇到了不能联网的问题: 下面给出我的解决方法(win10系统.ubuntu 16.04) 我的电脑-管理-设备管理器 看是否虚拟机的虚拟网卡在: 在去设置-控制面板 ...

  9. JSON--WEB SERVICE

    Query ajax webservice:get 和 post 一.GET 方式 客户端 复制代码代码如下: var data = { classCode: "0001"}; / ...

  10. Loading class `com.mysql.jdbc.Driver'. This is deprecated

    注意mysql的版本,pom.xml里面的版本.External Librarlies里面的mysql版本.application.properties版本都要检查 有时候还会报 Invalid bo ...