2016-07-01 19:21:10 2672次浏览 4条回答 1 悬赏 10 金钱
public function behaviors(){
        return [
            'class' => TimestampBehavior::className(),
            'createdAtAttribute' => 'cdate',// 自己根据数据库字段修改
            'updatedAtAttribute' => 'mdate', // 自己根据数据库字段修改
            'value' => date('Y-m-d H:i:s', time()),

        ];
    }

这段代码,不知道错在那里。我放在model层 报错 Class cdate does not exist 怎么会这样昵。 数据库里字段没有错的。
求解?

最佳答案

  • 晦涩de咚 发布于 2016-07-01 21:55 举报
    return [ 
                [ 
                    'class' => TimestampBehavior::className(), 
                    'attributes' => [ 
                        ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], //插入数据时;给'created_at', 'updated_at'填充当前时间戳
                        ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'], //更新数据时;给 'updated_at'填充当前时间戳
                    ], 
                ], 
            ]; 
    

    还可以用beforeSave

    5 条回复
    回复于 2016-07-04 14:23 回复

    还是不可用。不知什么原因。。我用原生赋值方法处理了。。贴出来的代码是之前我自己用过 。没错。不知道现在的项目是什么问题。谢谢了。

    回复于 2016-07-04 14:40 回复

    你的方法确实可以,但是似乎你写错了吧。你可以看http://www.yiichina.com/tutorial/830
    你少一个中括号

    return[
        [
            'class' => TimestampBehavior::className(),
            'createdAtAttribute' => 'cdate',// 自己根据数据库字段修改
            'updatedAtAttribute' => 'mdate', // 自己根据数据库字段修改
            'value' => date('Y-m-d H:i:s', time()),
        ]
    ];
    
    回复于 2016-07-04 17:15 回复

    也试过。。

    回复于 2016-07-04 17:51 回复

    贴整个model吧,字段有,还报字段不存在?这只能说字段有问题吧,我给你的原始写法可以吗?其实你本身的写法最终实现的就是还是我给你的原始写法。

    回复于 2016-07-05 09:46 回复

    [['duration','begintime', 'cdate', 'mdate'], 'required'], 我想是不是我rules 问题造成的。你之前那种原生的也试过,不行。现在我用 $this->mdate = date('Y-m-d H:i:s', time()); 这种方法搞了。项目都提交了。谢谢你了。

  • 回答于 2016-07-02 09:37 举报

    因为你少一个[],

    return [
        [
            'class' => TimestampBehavior::className(),
            xxxxxxxxxxxxx
        ]
    ];
    
    1 条回复
    回复于 2016-07-04 14:23 回复

    试过。。不行。

  • 回答于 2016-07-02 09:38 举报

    答案直接没了。。。。站长呢

    2 条回复
    回复于 2016-07-02 09:39 回复

    有bug啊,刚提交答案,没有出来,显示2个答案,但是只有一个。我又发了这条才出来了。肯定不是眼花。。!

    回复于 2016-07-02 15:40 回复

    数据库里查过了,只有以上发的两个回答。

  • 回答于 2016-07-11 11:43 举报

    虽然问题已解决,这里还是补充一下,
    出现同样问题的可以试试以下方法:
    楼主的代码除了少了一个[]括号外,
    [['duration','begintime', 'cdate', 'mdate'], 'required']这个里面的'cdate', 'mdate'两个attributes可能需要删掉。
    原因:
    required 是在 timestampbehavior 之前执行。
    required验证器执行时 timestampbehavior 还没来得及填写数据,如果此时'cdate', 'mdate'属性未填数据的话,required验证器会报错。结合app的错误日志,可以看看是不是required validate的问题

您需要登录后才可以回答。登录 | 立即注册
最爱红烧肉
副总裁

最爱红烧肉

注册时间:2014-11-07
最后登录:2017-10-27
在线时长:69小时2分
  • 粉丝11
  • 金钱4740
  • 威望30
  • 积分5730

热门问题