2015-06-04 10:19:42 19162次浏览 5条回答 4 悬赏 20 金钱

问题这样的
created_at 创建时间
updated_at 更新时间

动作:
1、新增 created_at = updated_at = time()
2、更新 created_at 不变 updated_at = time()

在models里创建时间和更新时间都可以指定默认值为time()
为题来了,更新的时候创建时间也跟着变了,怎么办?

如果分不够群里CALL我哈

最终解决代码:

use yii\behaviors\TimestampBehavior;

    public function behaviors()
    {
        return [
            [
                'class' => TimestampBehavior::className(),
                'createdAtAttribute' => 'created_at',
                'updatedAtAttribute' => 'update_at',
                //'value' => new Expression('NOW()'),
                //'value'=>$this->timeTemp(),
            ],
        ];
    }

最佳答案

  • 发布于 2015-06-04 10:23 举报

    使用它TimestampBehavior能帮助到你

      use yii\db\Expression;
     
      public function behaviors()
      {
     
         return [
              [
                  'class' => TimestampBehavior::className(),
                  'createdAtAttribute' => 'create_time',// 自己根据数据库字段修改
                  'updatedAtAttribute' => 'update_time', // 自己根据数据库字段修改
                  'value' => time(), // 自己根据数据库字段修改
              ],
          ];
     }
    
  • 回答于 2015-06-04 10:21 举报

    创建时间为什么要变?

    1 条回复
    回复于 2015-06-04 10:25 回复

    不是说创建时间要改变,而是['created_at', 'default', 'value' => time()], 这样设置更新的时候肯定是跟着改变了,不想更新的时候跟着改变。

  • 回答于 2015-06-04 10:26 举报
    use yii\behaviors\TimestampBehavior;
    
    public function behaviors()
    {
        return [
            TimestampBehavior::className(),
        ];
    }
    

    默认就是created_at和updated_at
    我要分

  • 回答于 2015-06-12 21:24 举报

    使用 TimestampBehavior 准确无疑, yii 的创建用户就是这么玩的

  • 回答于 2016-04-08 15:00 举报

    我创建的时候 这两个时间一起插入数据库没有问题 但是当我修改的时候 两个时间没有变化
    如果我同时给这两个时间加上值 update_at=time()和created_at=time() 数据库同时两个时间都更新了 我只想让update_at一个时间更新 怎么做
    model

    public function behaviors()
    	{
    	    return [
    	        [
    	            'class' => TimestampBehavior::className(),
    	            'attributes' => [
    	              ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
    	              ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
    				],
    	            'value' => new Expression('NOW()'),
    	        ],
    	    ];
    	}
    

    controller

                            $post['updated_at']=date('Y-m-d H:i:s',time());
                            $post['created_at']=date('Y-m-d H:i:s',time());
                            $news->attributes = $post;
    			$news->save();
    			if ($news->hasErrors())
    			{
    				return $this->redirectMessage($news->getError());
    			}
    			return $this->redirect('/news');
    
    , 觉得很赞
您需要登录后才可以回答。登录 | 立即注册
trylife
总监

trylife Beijing

注册时间:2015-03-26
最后登录:2020-12-07
在线时长:51小时55分
  • 粉丝39
  • 金钱1626
  • 威望40
  • 积分2536

热门问题