Yii2 findOne返回一个数组,但不是一个Object(ActiveRecord)

时间:2015-07-12 19:16:56

标签: php activerecord yii2

我试图使用模型的afterFind方法

public function afterFind() {                


        $group = GroupMember::findOne(1);;

        Yii::info($group->id);

        parent::afterFind();
    }

错误是

  

尝试获取非对象的属性

我发现findOne返回一个包含列值的数组。

我的问题是我做错了什么,或者只是在找到这个之后?

感谢。

3 个答案:

答案 0 :(得分:1)

查看文档,findOne()无法返回数组。

最有可能记录id = 1 dosn,并且您获得nullafterFind()与此无关。

答案 1 :(得分:1)

@Awesome AP - 这不是紧急语法错误(使用&#34 ;;;")

@arogachev - 在文档中有说

  

通过主键或a返回单个活动记录模型实例   列值数组

它确实给我一个阵列,但我不知道为什么。

幸运我按$group = GroupMember::find(1)->one();解决了这个问题。

但坦克你们都帮助我。

答案 2 :(得分:0)

这个问题已经很老了,但是arogachev是正确的。 findOne返回ActiveRecord或Null,则返回null 关于文档,您阅读了方法说明,而不是方法返回的内容,只是走到最后,发现:

返回静态值| null
符合条件的ActiveRecord实例;如果没有匹配项,则为null。

说明: 通过主键或列值数组返回单个活动记录模型实例。 该短语不是很清楚,但是它意味着您可以将ID或列名=>值的数组作为查询过滤器传递给查询过滤器。从2.0.37版本开始,可以传递表达式