2lenzi 2011-09-02 22:06:27 8970次浏览 6条回复 1 0 0
protected function beforeSave()
{
  if(parent::beforeSave())  //为什么进行这个判断,什么作用?
  {
    if($this->isNewRecord)
    {
      $this->create_time=$this->update_time=time();
      $this->author_id=Yii::app()->user->id;
    }
    else
    {
      $this->update_time=time();
      return true;     //结果一定要返回bool么?
    }
  else
    return false;
}

if(parent::beforeSave()) 判断起什么作用? 函数一定要返回bool值么?

  • 回复于 2011-09-02 22:11 举报

    主要是有时候在保存前需要进行一些操作。比如:create_time,update_time这些字段的值不需要用户输入,由系统提供,所以在保存前可以给模型实例的这些字段赋值。

  • 回复于 2011-09-03 21:49 举报

    if(parent::beforeSave())是说在前面的beforesave()返回true就执行,此beforesave()执行后返会true则继续执行后面的save操作,否则则抛出错误,不知这个说法是否正确~!

  • 回复于 2011-09-04 20:56 举报

    把php面向对象看看!

  • 回复于 2012-02-05 15:01 举报

    关键看父类CActiveRecord,因为beforeSave是在父类中被调用的,insert与update方法都调用了beforeSave方法,而且该方法的返回值都是布尔类型。在这里肯定要进行判断了,而且返回bool类型的值。

  • 回复于 2017-05-31 18:03 举报

    里面一个if语句这样的?:
    `if($this->isNewRecord)

    {
      $this->create_time=$this->update_time=time();
      $this->author_id=Yii::app()->user->id;
    }
    else
    {
      $this->update_time=time();
      return true;     //结果一定要返回bool么?
    }`
    

    还是这样?

    if($insert)
                {
                    $this->create_time = time();
                    $this->update_time = time();
                }
                else
                {
                    $this->update_time = time();
                }
    
                return true;
    
    1 条回复
    回复于 2017-05-31 18:05 回复

    代码没贴好,不能改,额~

    觉得很赞
  • 回复于 2018-02-08 13:56 举报

    我按照教程里的走,当调用actionUpdate()的时候会走beforeSave() 而调用actionCreate()的时候却没有走beforeSave()是什么情况,大家有人遇到过么,按道理不是只要调用了save()方法就应该会执行beforeSave()么

您需要登录后才可以回复。登录 | 立即注册