1. return  $this->goBack();
    // 先看看Yii::$app->user->returnUrl是否已经设置, returnUrl没有设置且goBack()中的参数也未设置则会返回到homeUrl指定的地址。
    //Yii::$app->user->setReturnUrl(\Yii::$app->request->referrer);
    return $this->goBack(\Yii::$app->request->referrer); //比如修改页面,修改失败则可以使用这个返回之前修改的页面,配合session使用,给出提示信息。
    可以使用$session = \Yii::$app->session; $session->setFlash('editmsg', '修改失败,请重试'); 给出提示信息 在页面中可以使用如下代码显示提示信息。
    <?php if(\Yii::$app->session->hasFlash('editmsg')):?>
    <div class="btn-danger"><?=\Yii::$app->session->getFlash('editmsg')?></div>
    <?php endif; ?>
  2. findOne()可以使用数组作为查询条件,使用的是关联数组,键对应的是数据库里的列,值对应的是数据库里的值。如果是标量数组,那么数组值都将作为主键查询,where id in (v1, v2...)。
  3. Active Record 的属性以区分大小写的方式为相关联的表列命名的。 Yii 会自动为关联表的每一列定义 Active Record 中的一个属性。 您不应该重新声明任何属性。
    // 在活动记录里的方法,用来转换数据库里updatetime格式
    public function getUpdatetimeText()
    {
    return date('Y-m-d', $this->updatetime);
    }
    //控制器中的方法,当查询的时候,就可以调用此方法 e.g:
    public function actionTest()
    {
    $time = Category::findOne(['sort'=>10]); //正常查询,可以使用非主键作为查询条件,但必须是关联数组
    echo $time->updatetime, '<br/>'; //这个输出的是数据库里的格式,yii自动定义这个属性,不需要在模型中人为定义,直接可以使用
    echo $time->getUpdatetimeText(),'<hr/>'; //这个按照自定义格式输出
    echo $time->updatetimeText; //同样按照自定义格式输出,这个就是getter,任何以get开头的方法,称为读取器,可以像使用属性一样使用,还有setter,但是使用属性比使用方法效率低一些
    //使用getter和setter条件是需要继承 yii\base\Object 或其子类,注意:如果设置getter时,get后面的命名和属性名相同,getter将不会生效。
    $t = new Category();
    echo $t->getUpdatetimeText(); //new 这个输出的数据是1970-01-01,并不是数据库里的数据,格式虽然正确,我想应该是因为new ,代码认为是将要添加数据库里的数据,
    没有值,所以按格式输出1970-01-01(目前还不是很清楚这个原因,猜想)
    }

    下面是yii baseObject 类的部分源码,可以借鉴学习。(getter)

    public function __get($name)
    {
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
    return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
    throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    } else {
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
    }
    }
  4. 通过 Active Record 对象获取数据十分方便灵活,但是当获取大量数据时候,将导致大量内存占用。查询方法前调用 asArray() 方法,以数组形式返回结果。虽然这种方法可以节省内存并提高性能,但是返回的列值都是以字符串的形式返回。asArray 方法将会失去activeRecord的一些功能。
  5. 数据验证: save 方法默认会自动调用validate方法进行数据验证。如果不需要验证则可以传false给save,e.g:save(false)跳过验证。$models->errors可以获取验证错误的信息,成功返回空数组。
  6. 更新浏览量字段可以使用updateCounters()方法,文档中说使用save方法更新计数字段会出现错误,比如并发的情况,数据更新会发生错误。但是updateCounters这个方法是什么原理目前还不知道。
  7. getter 和 setter: 只定义了 getter 没有 setter 的属性是只读属性。尝试赋值给这样的属性将导致 yii\base\InvalidCallException (无效调用)异常。类似的,只有 setter 方法而没有 getter 方法定义的属性是只写属性,尝试读取这种属性也会触发异常。使用只写属性的情况几乎没有。

yii学习笔记(四)的更多相关文章

  1. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  2. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  3. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  5. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  7. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  8. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

  9. Go语言学习笔记四: 运算符

    Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...

  10. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

随机推荐

  1. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

    MFC中ASSERT作为断言语句,括号内内容为TRUE,继续执行:为FALSE终止执行.之后取得当前窗口的系统菜单,在这个菜单中添加字符串资源IDS_ABOUTBOX和菜单资源IDM_ABOUTBOX ...

  2. vue 模拟测试数据构建

    等价=====================================

  3. 使用Iview时候 报:no-parsing-error Parsing error: x-invalid-end-tag 解决办法

    解决办法有两种解决办法: 1.MenuItem修改为:menu-item 2.在根目录下 .eslintrc.js 文件 rules 下添加: "vue/no-parsing-error&q ...

  4. Spring Boot源码分析-启动过程

    Spring Boot作为目前最流行的Java开发框架,秉承"约定优于配置"原则,大大简化了Spring MVC繁琐的XML文件配置,基本实现零配置启动项目. 本文基于Spring ...

  5. 怎样理解 Vue 组件中 data 必须为函数 ?

    组件意在 复用 , 若为 对象, 则会相互干扰. 且 Vue 不允许此事发生, 规定必须为函数, 否则报错. 原理如下 对象 // 模拟创建组件 var Component= function() { ...

  6. 03docker镜像

    docker的镜像操作 Union文件系统是Docker镜像的基础. UnionFS(联合文件系统):Union文件系统是一种分层,轻量级并且高性能的文件系统.它支持对文件系统的修改作为一次提交来一层 ...

  7. wcf可以返回的类型有哪些

    Windows Communication Foundation (WCF) 使用 DataContractSerializer 作为其默认的序列化引擎以将数据转换到 XML 并将 XML 转换回数据 ...

  8. 深入理解hadoop之HDFS

    深入理解hadoop之HDFS 刚刚才写完关于mapreduce的一篇博文,趁热打铁接下来聊聊HDFS.本博文参考资料为HADOOP权威指南第3版完版,博文如有错漏之处,敬请指正. HDFS即Hado ...

  9. vue页面中图片不显示解决

    在做新版组态界面的时候,用vue框架实现,在配置页面图片的时候发现有一张图片明明页面输入的路径是对的可是图片就是不显示出来 现象: network页面资源也不报错,而且状态码竟然还是200,点prev ...

  10. 上述代码在JavaScript事件处理中

    上述代码在JavaScript事件处理中很常见,主要设置为与旧版本的Internet Explorer(主要在IE9之前)兼容,因为旧版本的IE不支持标准的W3C事件处理规范. 此代码中的e表示事件对 ...