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

本文详细介绍了Yii2框架中的行为模型,重点讲解了TimestampBehavior和BlameableBehavior的使用方法,并通过实例展示了如何利用AttributeBehavior自动生成字段值。
 
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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值