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. Python获取当前文件路径及父文件路径

    import os # 当前文件的路径 1.os.getcwd(): 2.os.path.realpath(__file__) # 当前文件的父路径 1.pwd=os.getcwd()   os.pa ...

  2. (转)单例模式(Singleton)的常见应用场景

    转自:http://blog.csdn.net/likika2012/article/details/11483167 单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至 ...

  3. python3练习100题——020

    原题链接:http://www.runoob.com/python/python-exercise-example20.html 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下 ...

  4. js面向对象的程序设计 --- 中篇(创建对象) 之 工厂模式和 构造函数模式

    创建对象 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复代码. ·工厂模式 工厂模式是一种广为人知的设计模式,这种模式 ...

  5. rf关键字

    1.获取字典中的key ${b} Set Variable ${a}[0][dealer_buy_price] Log ${b}   2.${b}的float类型转换string 再和后面比较 Sho ...

  6. Centos7下配置Apache的虚拟主机

    一.虚拟主机 虚拟主机是Apache提供的一个功能,通过虚拟主机拉雅在一台服务器上部署多个网站.虽然服务器的IP地址是相同的,但用户当用户使用不同的域名访问时,访问到的是不同的网站. 下面讲解Apac ...

  7. 1.EntityManaget的persist和merge方法的区别

    1.persist和merge的区别: Persist:添加 Merge : 分两种情况,当对象存在id,则修改:当对象不存在id则添加. 看个例子: 1 public class Account { ...

  8. SaltStack常用的模块

    目录 1. SaltStack模块介绍 2. SaltStack常用模块 2.1 SaltStack常用模块之network 2.1.1 network.active_tcp 2.1.2 networ ...

  9. 2020年算法设计竞赛 DP

    链接:https://ac.nowcoder.com/acm/contest/3002/I来源:牛客网https://ac.nowcoder.com/acm/contest/3002/I 题目描述 & ...

  10. (转载)Docker的boot2docker.iso镜像使用

    原文路径:https://blog.csdn.net/jiangjingxuan/article/details/54908272#commentsedit 在Docker首次启动时需要下载的一个bo ...