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

 
 
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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值