【问题标题】:Yii framework. Can't save modelYii 框架。无法保存模型
【发布时间】:2013-10-11 14:55:17
【问题描述】:

我对 Yii 有疑问。我在控制器中有以下代码:

...
$user = User::model()->find("user_id = :id AND type='1'", array('id'=>$user->id));
$user->time=new CDbExpression('NOW()'); 
$user->status=1;
$user->save();
...

我得到这个错误:

调用未定义的方法 stdClass::save()

怎么了?

【问题讨论】:

    标签: php yii frameworks


    【解决方案1】:

    我看到你需要测试你是否有用户 就这样做:

    if($user)
    

    您的模型是否扩展了 CactiveRecord ?

    您应该显示错误以了解问题所在

    if(!$user->save()){
       var_dump($user->getErrors());
    }
    

    这会很有帮助

    【讨论】:

    • 我仍然收到错误:调用未定义的方法 stdClass::save()
    • 我收到验证错误,例如:Timestamp cannot be blank.,我原以为这些错误会是致命的。
    【解决方案2】:

    你的错误是经典的知道到底出了什么问题!这是一个可能是您的错误原因的问题:

    当您找到您的用户时,如果没有找到,该方法将返回false,然后其余操作将失败。您应该执行以下操作:

    $user = User::model()->find("user_id = :id AND type='1'", array('id'=>$user->id));
    if($user !== null) {
        $user->time=new CDbExpression('NOW()'); 
        $user->status=1;
        $user->save();
    }
    

    【讨论】:

    • 我仍然收到错误:调用未定义的方法 stdClass::save()
    • 你能不能在 if 条件之后做一个 $user 的 var_dump 并向我们展示结果?
    • object(stdClass)#158 (2) { ["time"]=> object(CDbExpression)#159 (4) { ["expression"]=> string(5) "NOW()" ["params"]=> array(0) { } ["_e":"CComponent":private]=> NULL ["_m":"CComponent":private]=> NULL } ["status"]=> int(1) }
    • 用户模型有自己的 find() 方法吗?我在想 User 模型有 find() 方法,它覆盖了 CActiveRecord 的 find() 方法并且返回的不是 CActiveRecord::find() 通常返回的。
    • 你的转储真的很小,就像返回的对象不是 CActiveRecord 对象。正如@andrzej1_1 所说,您是否覆盖了模型中的 find 方法?
    【解决方案3】:

    if ($model->load(Yii::$app->request->post())) {

            $model->startDate = $modifiedStartDate;
            $model->timeFrom = $modifiedFromTime;
            $model->timeTo = $modifiedToTime;
            //echo '<pre>';
            //print_r($model);exit;
            $model->save();
            //return $this->redirect(['view', 'id' => $model->id]);
            return $this->redirect(['timelog/index']);
        } else {
            return $this->render('create',
                            [
                        'model' => $model,
            ]);
        }
    

    //为什么在使用$method->save()时会出现错误;功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多