V2.0 - Behavior使用集合
yoyocmf 2020-02-28 11:29:53

 1、created_at, updated_at 更新时间和创建时间

PHP Code复制内容到剪贴板
  1. public function behaviors()    
  2.   {    
  3.      
  4.      return [    
  5.           [    
  6.               'class' => TimestampBehavior::className(),    
  7.               'createdAtAttribute' => 'create_time',// 自己根据数据库字段修改    
  8.               'updatedAtAttribute' => 'update_time'// 自己根据数据库字段修改    
  9.               'value' => time(), // 自己根据数据库字段修改    
  10.           ],    
  11.       ];    
  12.  }   

 

 

PHP Code复制内容到剪贴板
  1. use yii\behaviors\TimestampBehavior;    
  2.     
  3. public function behaviors()    
  4. {    
  5.     return [    
  6.         TimestampBehavior::className(),    
  7.     ];    
  8. }   

 

 

PHP Code复制内容到剪贴板
  1. public function behaviors()    
  2. {    
  3.     return [    
  4.         [    
  5.             'class' => TimestampBehavior::className(),    
  6.             'updatedAtAttribute' => false    
  7.         ]    
  8.     ];    
  9. }    

 

2、行为记录

PHP Code复制内容到剪贴板
  1. public function behaviors()  
  2. {  
  3.     return [  
  4.         TimestampBehavior::className(),  
  5.         [  
  6.             'class' => EnewsdologBehavior::className(),  
  7.             'defaultDoing' => '自定义文字[{info.tempname}]'  
  8.         ]  
  9.     ];  
  10. }  

 

3、记录用户ID在新增时写入user_id字段

PHP Code复制内容到剪贴板
  1. public function behaviors()  
  2.     {  
  3.         return [  
  4.             TimestampBehavior::className(),  
  5.             [  
  6.                 'class' => BlameableBehavior::className(),  
  7.                 'createdByAttribute' => 'user_id',  
  8.                 'updatedByAttribute' => false  
  9.             ]  
  10.         ];  
  11.     }  

 

4、获取常用的用户信息

PHP Code复制内容到剪贴板
  1. public function behaviors()  
  2. {  
  3.     return [  
  4.         ...  
  5.         UserBehavior::className()  
  6.     ];  
  7. }  

 

默认字段是根据user_id获取用户信息,也可指定字段名

PHP Code复制内容到剪贴板
  1. [  
  2.     "class" => UserBehavior::className(),  
  3.     "userIdAttribute" => "member_id"  
  4. ]  

 

 

5、顶踩

PHP Code复制内容到剪贴板
  1. use common\behaviors\VoteBehavior;  
  2.   
  3.     public function behaviors()  
  4.     {  
  5.         return [  
  6.             ...  
  7.             [  
  8.                 'class' => VoteBehavior::className(),  
  9.                 'entity' => __CLASS__  
  10.             ],  
  11.         ];  
  12.     }  

 

6、标签(仅用于document模块)

PHP Code复制内容到剪贴板
  1. use common\behaviors\TagBehavior;    
  2.     
  3.     public function behaviors()    
  4.     {    
  5.         return [    
  6.             ...    
  7.             TagBehavior::className(),   
  8.         ];    
  9.     }    

 

7、软删除

执行删除:model->softDelete(),写入deleted_at软删除时间

执行恢复:model->restore(),更新deleted_at删除时间为null

 

PHP Code复制内容到剪贴板
  1. use common\behaviors\SoftDeleteBehavior;    
  2.       
  3.     public function behaviors()      
  4.     {      
  5.         return [      
  6.             ...      
  7.             [  
  8.                 'class' => SoftDeleteBehavior::className(),  
  9.                 'softDeleteAttributeValues' => [  
  10.                     'deleted_at' => function ($model) {  
  11.                         return time();  
  12.                     }  
  13.                 ],  
  14.                 'restoreAttributeValues' => [  
  15.                     'deleted_at' => null  
  16.                 ],  
  17.                 'invokeDeleteEvents' => false // 不触发删除相关事件  
  18.             ],    
  19.         ];      
  20.     }      

 

 8、behavior记录

如果我在项目表,需要添加成员的关联表,那么我添加了一个behaviors在使用set魔术方法一直未进去时,如何解决?

(1)model的rules需要添加虚拟字段

(2)behaviors 设置的虚拟字段与form中是否一致

 

 

本文来自于:http://www.yoyo88.cn/note/yoyocmf/498.html

Powered by yoyo苏ICP备15045725号-1