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
相关文章推荐
- 数据库Postgresql在使用Hibernate自动新增字段后插入不生效
- yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
- yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码
- [导入]C#分析数据库结构,使用XSL模板自动生成代码
- C++Builder6中ADOQuery使用了lookup字段后如何插入记录
- vim配置技巧——在vim中使用autocmd命令在保存文件时自动插入最后修改日期和时间
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码(二)
- Maemo Linux手机平台系列分析:8 Maemo平台开发之 使用Glib绑定的D-Bus
- C#分析数据库结构,使用XSL模板自动生成代码
- 地磅称量系统之(37~39) 直接向数据库的数据表WtBill添加测试数据以及绑定用户控件和使用编码的方式控制dataGridView控件的每列属性和添加数据数据库的表中不存在的字段(非绑定列)
- C#分析数据库结构,使用XSL模板自动生成代码
- JfreeChart使用经验总结(分析了使用中碰到的一些常见问题)
- Gridview中当设置自动生成列时对列中字段使用 html代码显示
- ASP.NET 程序设计中常用到的一些通用函数 自己的封装 可以做成dll来使用。
- Gridview中当设置自动生成列时对列中字段使用 html代码显示
- Java下通用自动插入数据组件的编制