首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii框架:尝试获取非对象的属性

Yii框架:尝试获取非对象的属性
EN

Stack Overflow用户
提问于 2013-03-29 12:56:38
回答 1查看 2.3K关注 0票数 2

我所拥有的:

代码语言:javascript
复制
public function beforeValidate() {
    $offender = Accounts::model()->find(array('select'=>'id','condition'=>'username=:username','params'=>array(':username'=>$this->offender)));
    $informer = Accounts::model()->find(array('select'=>'id','condition'=>'username=:username','params'=>array(':username'=>$this->informer)));
    $this->offender = $offender->id;
    $this->informer = $informer->id;
    return parent::beforeValidate();
}

我得到的是:

PHP注意,这就是说,我正在尝试获取非对象$offender$informer的属性“id”。

但这些都是100%的对象:

var_dump($offender):

目的(账户)46

var_dump($informer):

目的(账户)46

它实际上设置了正确的id,但是显示了通知。怎么啦?

解决了不能把它作为官方答复再张贴六个小时,所以我把它放在这里:

实际上,这个问题是在双beforeValidate()调用中发生的。

AbuseController.php:

代码语言:javascript
复制
    if(isset($_POST['AbuseReport']))
    {
        $model->attributes=$_POST['AbuseReport'];
        if($model->validate())
        {
            $model->save();
        }
    }

第一次在$model->validate()上验证,用正确的ID替换$this->offender$this->informer;第二次在$model->save();上验证,但是模型这次返回null,因为$this->offender已经是ID,但是它需要用户名。

整个解决方案就是禁用第二个验证:$model->save(false);

EN

回答 1

Stack Overflow用户

发布于 2013-04-02 05:47:26

使用isset或is_object

代码语言:javascript
复制
if(isset($offender->id) || is_object($offender->id)){
$this->offender = $offender->id;
$this->informer = $informer->id;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15703698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档