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. 2.spring源码-BeanPostProcessor后置处理之ApplicationContextAwareProcessor,实现spring容器中某一个类的bean对象在初始化时需要得到Spring容器内容。

    需求:我们的需求是,在spring初始化完毕时,使我们自定义一个类Bird类可以得到spring容器内容. 实现步骤: 1.首先我们来看一下ApplicationContextAwareProcess ...

  2. 跨站点请求伪造(CSRF、XSRF)

    相关文章: 1. http://www.cnblogs.com/xiaoqian1993/p/5816085.html  深入解析跨站请求伪造漏洞:原理剖析 2 .http://blog.csdn.n ...

  3. 解决报错:ERROR 1005 (HY000): Can't create table 'market.orders' (errno: 150)

    1.描述问题: 在这里我新建了两张表(customers_info和orders) 表一:customers_info CREATE TABLE customers_info ( c_num INT( ...

  4. hrtf virtual surround matlab实现

    将5.1 ch的数据经过hrtf处理,然后downmix到2ch,使得2ch的数据有virtual surround的效果. function output = hrir_process(input) ...

  5. (转)KMP算法

    转自:http://blog.csdn.net/yutianzuijin/article/details/11954939 我们首先用一个图来描述kmp算法的思想.在字符串O中寻找f,当匹配到位置i时 ...

  6. Java必须知道的知识点

    junit用法,before,beforeClass,after, afterClass的执行顺序 分布式锁 nginx的请求转发算法,如何配置根据权重转发 用hashmap实现redis有什么问题( ...

  7. sql查询 —— 模糊查询

    --模糊查询 --like --%至少替换一个 -- _只替换一个 -- 查姓李的人 select *from student name like "李%"; -- 查名为杰伦的人 ...

  8. <img src = "..."/>的一个图片上面怎么在放上字

    转自:https://zhidao.baidu.com/question/1495805873400412779.html 例子1: html中可以用css相对定位让文字在图片的上面. 1.新建htm ...

  9. 阿里云MySQL安装到centos,并链接。

    Last login: Wed Jan 22 11:21:17 on ttys001 wulaguixiaomianyangdeMacBook-Pro:~ xingwen$ ssh root@47.9 ...

  10. 一个仿tp5分页组件的实现

    样式: a{ text-decoration: none; color: inherit; } .out-cp{ width:100%; text-align: center; } .c-page{ ...