【问题标题】:Yii2 findOne returns me an array, but not an Object(ActiveRecord)Yii2 findOne 返回一个数组,但不是一个对象(ActiveRecord)
【发布时间】:2015-07-12 19:16:56
【问题描述】:

我正在尝试使用模型的 afterFind 方法

public function afterFind() {                


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

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

        parent::afterFind();
    }

错误是

试图获取非对象的属性

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

我的问题是我做错了什么,或者只是在查找是否这样做?

谢谢。

【问题讨论】:

  • 你有一个语法错误:$group = GroupMember::findOne(1);;删除一个';'。

标签: php activerecord yii2


【解决方案1】:

看文档,findOne() 不能返回数组。

id = 1 最有可能的记录不存在,您会得到nullafterFind() 与此无关。

【讨论】:

    【解决方案2】:

    @Awesome AP - 这不是紧急的语法错误(带有“;;”)

    @arogachev - 在文档中有说

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

    它确实返回了一个数组,但我不知道为什么。

    幸运的是我通过$group = GroupMember::find(1)->one();修复了它。

    但是你们都帮了我。

    【讨论】:

      【解决方案3】:

      这个问题已经很老了,但 arogachev 是对的。 findOne 要么返回 ActiveRecord 要么返回 Null,你得到了 null 关于文档,您阅读了方法描述而不是它返回的内容,只需转到结尾,您就会发现:

      返回静态|null
      匹配条件的 ActiveRecord 实例,如果不匹配,则返回 null。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 2016-05-03
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        相关资源
        最近更新 更多