Yii 2.0 精简笔记整理 数据库增产改查

来源:互联网 发布:金融大数据语言 编辑:程序博客网 时间:2024/05/22 15:05
//获取传参,以及设置默认值
$request = /Yii::$app->request;
$id = $request->get('id',1);
$id = $request->post('id',1);
//判断请求的类型
$id = $request->isGet;
$id = $request->isPost;
//获取用户IP
$ip = $request->userIP;

//渲染V层并传递参数
return $this->renderPartial('index',$arr);//不渲染父模板
return $this->render('index',$arr);//layout渲染父模板
compact('arr1','arr2',......);//数组组装
//YII框架没有模板引擎类似CI框架

//定义父模板
//1、建立模板
view/layout/home.php
//2、控制器定义公共属性
public $layout = 'home';//用属性的方法定义父模板

//模板之间的相互调用
<?=this->render('index');?>

//字符串过滤(V层)预防xss攻击
<?php
use \Yii\helper\Html;
use \Yii\helper\HtmlPurifier;
?>
<?=Html::encode($str);?>//转为html实体输出
<?=HtmlPurifier::process($str);?>//标签过滤清楚

//自定义全局工具函数
//1、根目录新建文件夹helper;
//2、创建function.php;
//3、入口文件index.php加入
require(__DIR__.'/../helper/function.php');
引入工具函数php文件即可

//model层 模型创建可以参考系统自带的model,注意模型名称与对应表名一致。
/config/db.php //配置数据库信息
Article::findBySql($sql,[':id'=>$id])->all();//执行sql语句,第二个参数使用占位符,防止sql注入。

//查询
Article::find()->where()->all();//查询多条
Article::find()->where()->asArray()->all();//返回数组(比对象节约内存)
Article::find()->batch(2);//获取2条(将结果分批显示,缓解内存压力)
Article::find()->where()->one();//查询单条
//where条件写法
1、id = 5;
where([' id'=>5])
2、id >3;
where(['>',' id',5])
3、5>=id>=2;
where([' between',' id',2,5])
4、title like 巴菲特
where([' like',' title ','巴菲特'])
//简便写法
Article::findOne(5);//id = 5
Article::findAll(3,4,5);//id =3,4,5

//增加数据
$article = new Article();
$article->title = '标题';
$article->num= 3;
$data = $article->save();
//$data = $article->insert();//返回bool
$id = $article->attributes['id'];

//修改数据
$article = Article::findOne(5);
$article->title = '标题';
$article->num= 3;
$data = $article->save();//save()可以根据条件,自动判断执行update还是insert。
//$data = $article->update();//返回bool
//更新单条数据
$article = Article::updateAllCounters(['num'=>1],['id'=>8]);//id = 8的字段自增1。

//删除数据
$article = Article::findOne(5);
$article = Article::find()->where([' id' => 15])->one();
$data = Article[0]->delete();
//简便写法
$data = Article::deleteAll('id>:id and num<:num',[':id'=>13,':num'=>100]);

//关联表一对多查询hasMany--通过分类找文章
$category = Category::findOne(1);
$articles = $category->hasMany(Article::className(),['cate_id'=>'id'])->asArray();

//关联表一对一查询hasOne--通过文章找分类
$articles = Article::findOne(1);
$category = $articles ->hasOne(Category::className(),['id'=>'cate_id']);
//可以在model中定义方法,然后C中通过属性访问,自动调用方法。

//join--查找每一篇文章,并显示其分类
$articles = Article::find()->with('catagory')->asArray()->all();

原创粉丝点击