yii笔一----基础,安装,结构,增删改查基本操作
从yii中文站开始http://www.yiichina.com/
Yii 是一个高性能,基于组件的 PHP 框架
一.
1.安装yii方式
composer安装或者下载一份应用程序模板。刚开始学习,我使用后者
2.目录结构
a.解压源码包根目录下,requirements.php文件检查系统配置。
b.web目录下index.php是入口文件。通过这里访问应用,什么都没有配置的话访问结果如下图,这是因为需要配置cookievalidationkey防止恶意攻击。(配置目录在config下web.php文件中)
配置文件
配置之后再次访问
3.入口脚本如何处理请求
入口脚本不会直接处理请求,而是将他交给应用主体,就是框架里经常使用的app(YII::app),他其实是个对象,在正式处理请求之前他会先加载一些应用组件和一些相应的模块,这样帮助他更好的处理请求。然后应用主体会将请求交给相应的控制器,控制器需要与数据库打交道就交给模型,处理完后就交给视图。视图为了更好的展示会使用小部件和前端资源。
4.命名空间
参考文档http://www.php.net/manual/zh/language.namespaces.rationale.php
如果一个文件c引入多个文件(比如a文件和b文件),这些文件当中有同名的类,在c中使用时就会发生冲突。为了避免这样的情况发生就使用了命名空间,同一个命名空间中是不会有相同名称的类的。
在文件中声明语法:namespace a/b/c;如果一个文件中不声明命名空间,那么他就在顶层命名空间中,也称为全局类。
在文件中使用语法:use a/b/c as 或者$people=new a/b/c/People();
5.控制器的创建
controllers目录中创建控制器。
a.控制器都在一个命名空间中namespace app\controllers;
b.控制器都要继承Controller这个类,那么要使用他的命名空间就需要写use yii\web\Controller;
c.控制器里的方法叫做操作,必须以action开头,比如actionIndex
d.访问的时候url是这样写的
e.url中加参数
6.在控制器中获得参数,通过请求组件获得
a.首先需要全局类YII
b.需要全局类的静态变量app,即\YII::app,就是应用主体
c.应用主体会在处理前加载应用组件,现在就需要加载请求组件,YII::app->request;
get方法中给出的值,在id传递为空时显示,是默认值。
判断请求方式和获取客户端ip
7.控制器响应处理
8.session处理。靠session组件,获取方式和前边请求一样
$session= \YII::app->session;
打开session
$session->open();
判断session是否打开
$session-isActive
设置session值
$session->set("name","tom");
获取session值得方法
$session->get("name");
删除session
$session->remove("user");
session的识别原理:cookie保存在本地,会有个sessionid,请求发送时,会把这个sessionid发送过去,服务器通过这个来识别session信息,在session存储文件中根据这个值查找session。可以在php.ini文件中查找session.save_path查找保存位置
9.控制器cookie处理
使用cookies组件
$cookie=\YII::app->cookies;
增加cookie,需要cookie对象为参数,使用这个cookie类,得引入命名空间,use yii\web\Cookie;
$cookie->add(new Cookie());
删除
$cookie->remove("name");
从请求中读取cookie
$cookie=\YII::app->request->cookies;
$cookie->getValue("name");//也可以设置第二个参数,为默认值
二、视图
10.视图创建
在views目录下管理视图文件,根据控制器创建文件夹,文件夹下放置该控制器控显示的视图文件。视图文件后缀为php,控制器里边控制显示时可以省略后缀名。
使用renderPartial方法,前边框架规定必须return。
12.向模板中传递数据,三步,创建数组,添加数组,传递。
13.模板文件中使用传递过来的数据
数据带标签的处理
结果
14.render方法显示视图文件。做两件事情:1.将视图文件放到$content变量当中;2.将布局文件显示出来。
布局文件在views\layouts中创建
控制器中用的时候,指定是哪个布局文件
15.在一个视图中显示另一个视图,还可以向另一个视图穿数据,在另一个视图中数据使用和前边相同
16.数据块
替换模板中指定位置
如果视图文件没设置,增加判断
三.数据模型
17.数据库配置在config目录下的db.php文件中
18.数据模型创建,在modules目录下,文件和表名相同。
19.查询数据
20.条件查询
具体规则可以查看官网介绍,其中all()查询出的为对象,使用asArray()后再使用all(),查询出为数组对象。
21.删除
22.增加数据
增加时先实例化模型,然后可以对传来的参数进行检验,模型文件中检验
控制器进行调用
23.修改
24.关联查询,首先得创建每个表的模型
根据哪个表查,下面是根据顾客表查顾客订单
上面代码可以优化一处
模型文件
继续优化,这样写,系统就会去customer的模型中执行_get函数,然后系统默认给前边就了get,就找到了模型中的getOrders方法,然后提取数据,会默认给语句后增加all()函数,所以模型中将all()那句又去掉了。
其中,有个with方法,就是在第一次查询后,再到order表中查
根据订单查询所属的顾客,模型文件,hasOne只有一个
yii笔一----基础,安装,结构,增删改查基本操作的更多相关文章
- 大数据系列之分布式数据库HBase-0.9.8安装及增删改查实践
若查看HBase-1.2.4版本内容及demo代码详见 大数据系列之分布式数据库HBase-1.2.4+Zookeeper 安装及增删改查实践 1. 环境准备: 1.需要在Hadoop启动正常情况下安 ...
- mongodb的安装与增删改查
mongodb是一款分布式的文件存储的数据库,注意这两个词,分布式和文件存储.mongodb支持复制和分片,可以合理的运用空间的大小,也可以达到容灾的目的.另外文件存储也是一个特点,抛弃了传统的表的概 ...
- get,post,put,delete四种基础方法对应增删改查
PUT,DELETE,POST,GET四种基础方法对应增删改查 1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数 ...
- MySQL 之基础操作及增删改查等
一:MySQL基础操作 使用方法: 方式一: 通过图型界面工具,如 Navicat,DBeaver等 方式二: 通过在命令行敲命令来操作 SQL ( Structure query language ...
- MongoDB入门(介绍、安装、增删改查)
文章作者公众号bigsai,已收录在回车课堂,如有帮助还请不吝啬点个赞赞支持一下! 课程导学 大家好我是bigsai,我们都学过数据库,但你可能更熟悉关系(型)数据库例如MySQL,SQL SERVE ...
- MongoDB简介,安装,增删改查
MongoDB到底是什么鬼? 最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据库,知道是文件型数据库,但是不知道怎么来用 那么好, ...
- 02 . Mysql基础操作及增删改查
SQL简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发. SQL语句四大 ...
- (2)MySQL的增删改查基本操作
数据库增删改查的基本操作(数据文件在data目录下) 数据库的专业术语 1.文件夹:数据库 2.文件:数据表 指令的注意事项 1.用use的时候指令结尾不需要跟一个分号 ‘:’ 2.如果用show或其 ...
- MySQL基础SQL命令---增删改查
1.表操作: create table tableName (id int(6) not null primary key auto_increatment,name varchar(10) not ...
- TP5学习基础一:增删改查小demo
①TP5--增删改查简单的demo 我先吐槽一下:因为工作需要研究tp5,去官网看了一下哎呦,资源挺多挺全啊!然后下载唯一免费的官方教程,我曹pdf打开533页.讲的很细但是开发能等看完才做吗?看到精 ...
随机推荐
- c#程序如何从海康ipserver查询获取DVR设备ip地址
海康威视提供的ipserver可以记录DVR设备的IP地址,并提供一个7071的端口给客户端查询用,我们在c#程序中可以用海康SDK包中的NET_DVR_GetDVRIPByResolveSvr函数来 ...
- sqlserver Between And的问题
Id Name RegisterDate 1 澎澎 2007/1/5 00:00:00 2 丁丁 2007/1/6 04:37:00 3 亞亞 2007/1/7 00:00:00 数据库的数据如上.若 ...
- 上传文件 隐藏input type="file",用text显示
<div> <span>上传文件:</span> <input type="file" id="upload_file" ...
- VirtualBox上搭建Ubuntu开发环境
软件版本: VirtualBox虚拟机:5.1.8 for Windows hosts x86/amd64 Ubuntu系统:Ubuntu 14.04.5 LTS Desktop (32-bit) ...
- C# 通过模拟http请求来调用soap、wsdl
C#调用webservice的方法很多,我说的这种通过http请求模拟来调用的方式是为了解决C#调用java的远程API出现各种不兼容问题. 由于远程API不在我们的控制下,我们只能修改本地的调用代码 ...
- java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
此错误是由于版本造成的,如果使用mybatis3.4版本以上,配置拦截器规则应增加Intger @Intercepts({ @Signature( type= StatementHandler.cla ...
- Oracle的tnsnames.ora配置(PLSQL Developer)
首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...
- LeetCode刷刷记录
一遍考研,一遍还是要刷刷题.感觉自己的时间安排的不是很好,还是要抓紧自己的日常时间,当然,也要练练刷题的手感. 1.第一题就两重循环找到索引就OK,因为是无序的,所以就不能用二分来查找,题目中每个数的 ...
- linux安装oracle11g
准备oracle安装文件 Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过SS ...
- 弱省互测#2 t2
题意 给两个树,大小分别为n和m,现在两棵树各选一些点(包括1),使得这棵树以1号点为根同构(同构就是每个点的孩子数目相同),求最大的同构树.(n, m<=500) 分析 我们从两棵树中各取出一 ...