yii 易 框架

表单元素

表单元素

表单元素

表关联

1.关联关系:(一对一,一对多)

	1). hasMany  一对多
	2). hasOne    一对一
	例子:  
	●第一个参数:所关联的模型的类名称。 
    ●第二个参数:是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。
	 public function getUser(){
 			return $this->hasMany(User::className(), ['user_id' => 'user_id']);
 	}

2.使用:

1) 关联方法名的定义:
	使用getName这种方式命名,get后面的命名首字母大写,
	调用这个关联方法时,直接调用name,不需要首字母大写;
	name最好是关联的另一个表的表名

2)关联方法调用

//作为属性调用,使用模型把他当做属性调用
		$article=new Article();
		$article=$article->user;
//在查询数据时用with方法调用
		$article=Article::find()->with('user')->asArray()->all();//如果你想最后返回的是标准数组形式,记得加上asArray();
//动态查询,关联关系函数做方法使用
		$article=Article::find()->getUser()->where(['id'=>1])->asArray()->all();

3.多表关联(多对多,三张表)

表1 article(文章表)    表二 classify(分类表)  表三 article_classify(中间表)
关联方法(在文章模型中)
 public function getClassify()
    {
        return $this->hasMany(Classify::className(), ['id' => 'classify_id'])
               ->viaTable('article_classify', ['article_id' => 'id']);
    }

分页

//查找文章数据,但并不获得
$article= Article::find()->where(['status' => 1]);
//获得所有的文章总条数
$count=$article->count();
//实例化一个分页模型
$pages=new Pagination([
		//一共要被分页的数据总条数
		'totalCount'=>$count;
		//每页最多展示的数据条数
		'pageSize' =>20;
]);
$articles=$article->offset($pages->offset)->limit($pages->limit)->all();
//在页面上使用
use yii\widgets\LinkPager;//命名空间
echo LinkPager::widget([
    'pagination' => $pages,
]);

获取控制器名和方法名

$controller=Yii::$app->controller->id;//task控制器名
$action=Yii::$app->controller->action->id;//taskcreate方法名

Gii使用(以青麦聚人气项目为参考)

安装

//方式一:composer命令安装
	php composer.phar require --dev --prefer-dist yiisoft/yii2-gii
//方式二:在composer.json中的 require-dev 加上以下代码:
	"yiisoft/yii2-gii": "~2.0.0"
	然后执行:composer dump

开启

1.配置应用的 modules 属性开启gii,通常来讲在 config/web.php 文件,这里放在了后台的config文件夹下的main-local.php中,如图:
modules 属性放置位置
2.检查应用的入口脚本 web/index.php, 将看到这行代码将 YII_ENV_DEV 设为 true:
在这里插入图片描述

使用

1.生成模型

场景

1.主要用于数据验证和自定义数据验证
2.使用方式

// 场景作为属性来设置
$model = new User;
$model->scenario = 'login';

// 场景通过构造初始化配置来设置
$model = new User(['scenario' => 'login']);

3.场景申明
在模型里面定义scenarios方法来申明场景

 public function scenarios()
    {
        return [
        '场景名'=>[场景作用的字段名];
            'create' => ['username', 'password', 'realname', 'status', 'role', 'avatar', 'sex', 'tel'],//添加
            'update' => ['realname', 'status', 'role', 'avatar', 'sex', 'tel'],//修改
        ];
    }
  有时你想一条规则只在某个 场景 下应用,为此你可以指定规则的 on 属性, 如下所示:  
  如果没有指定 on 属性,规则会在所有场景下应用, 在当前scenario 下应用的规则称之为 active rule活动规则。
  public function rules()
{
    return [
        [['username', 'email', 'password'], 'required', 'on' => 'register'],
    ];
}

密码加密

Yii 提供了两个帮助函数以让使用 crypt 来进行安全的哈希密码生成和验证更加容易。

//注册时加密,$password用户注册时提交的密码生成的秘钥
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
//在验证时,解密$password用户在登录时提交的密码,$hash存储在数据库的秘钥
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
   //密码匹配成功
} else {
   密码匹配错误
}

核心验证器验证规则

规则作用
required不能为空
boolean字段类型为boolean型
compare检查 “password” 属性的值是否与 “password_repeat” 的值相同
compareAttribute指定了需要对比的属性字段是password_repeat
email字段是否为有效的邮箱地址
exist字段的存在性
file字段是否为文件
extensions上传文件所允许的文件扩展名
filter过滤
image图片
ipIp地址
in范围
integer是否为整数
match匹配正则
number数字
string字符串
trim过滤空格
unique唯一性
url网址
trim过滤空格

缓存

注册缓存组件(common/config/main.php)

注册缓存组件
 'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',//配置缓存(缓存存储器有很多种)
        ],
        调用缓存
 $cache= Yii::$app->cache;     

1.数据缓存

//数据缓存和读取的一些方式
get():通过一个指定的键(key)从缓存中取回一项数据。 如果该项数据不存在于缓存中或者已经过期/失效,则返回值 false。
1.set():将一个由键指定的数据项存放到缓存中。
2.add():如果缓存中未找到该键,则将指定数据存放到缓存中。
3.getOrSet():返回由键指定的缓存项,或者执行回调函数,把函数的返回值用键来关联存储到缓存中, 最后返回这个函数的返回值。
4.multiGet():由指定的键获取多个缓存数据项。
5.multiSet():一次存储多个数据项到缓存中,每个数据都由一个键来指明。
6.multiAdd():一次存储多个数据项到缓存中,每个数据都由一个键来指明。 如果某个键已经存在,则略过该数据项不缓存。
7.exists():返回一个值,指明某个键是否存在于缓存中。
8.delete():通过一个键,删除缓存中对应的值。
9.flush():删除缓存中的所有数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值