您的位置:首页 > 编程语言 > PHP开发

YII2中一些通用字段的自动插入--behaviors()行为绑定的简要使用分析

2018-02-07 11:01 302 查看
behaviors()主要是用来绑定行为的,所谓绑定行为,就是在执行action的时候回附加添加某些属性。
比如使用最多的就是我们在添加数据时,会有created_time,修改数据时,会有update_time ,用户登录时,会记录最后登录时间;数据库里很多字段都是一些通用有规律的字段,那么我们就可以把这些字段提出来,作为行为绑定来实现,减少代码量。
yii2中自带的行为模型,有五种

TimestampBehavior

SluggableBehavior

BlameableBehavior

AttributeTypecastBehavior

AttributeBehavior

我们主要讲两个TimestampBehavior和BlameableBehavior

TimestampBehavior的使用
就是跟时间相关的属性
首先在country表中加入created_time和updated_time。
第二步,在模型中定义behaviors。
namespace frontend\models; use Yii; use yii\behaviors\TimestampBehavior; class Country extends \yii\db\ActiveRecord { ... public function behaviors(){ return [ [ 'class'=>TimestampBehavior::className(), 'attributes'=>[ ActiveRecord::EVENT_BEFORE_INSERT => ['created_time','updated_time'], ActiveRecord::EVENT_BEFORE_UPDATE => ['update_time'], ] ] ]; } ... }

二、BlameableBehavior的使用
与用户相关的一些属性
在country表中加入创建作者和修改作者。
public function behaviors() {
return [ [ 'class' => BlameableBehavior::className(), 'createdByAttribute' => 'creater_id', 'updatedByAttribute' => 'updater_id', ], ];
}

还有一个AttributeBehavior,这个看了一下通用性更强一些,从网上找了一个例子在这里给大家说一下。
我们假设一种场景,还是上面的那个member数据表,我们为其增加一个token字段,该字段的值被数据生成时初始化,值为username的md5值,这个事情在所有member初始化时候都会发生,现在用AttributeBehavior来搞定它。

// app\models\Member.php namespace \models; use Yii; use yii\behaviors\AttributeBehavior; use yii\db\ActiveRecord; class User extends ActiveRecord { public function behaviors(){ return [ [ 'class' => AttributeBehavior::className(), 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => 'token', ], 'value' => function ($event) { return md5($this->username); }, ], ]; } }

查看原文:http://www.architecy.com/archives/425
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐