加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

获取PHPActiveRecord结果作为简单数组,而不是对象数组

发布时间:2020-12-13 16:35:37 所属栏目:PHP教程 来源:网络整理
导读:我想有一个简单的方法,可以将 PHP Activerecord结果作为简单/关联数组,而不是ActiveRecord对象数组. 在Ruby中,我相信这可能是通过.map()方法完成的. (我不是ruby家伙…) 我想要的是一个简单的方法调用,比如Zend_DB_Table中的toArray(),而不是foreach,或类似
我想有一个简单的方法,可以将 PHP Activerecord结果作为简单/关联数组,而不是ActiveRecord对象数组.

在Ruby中,我相信这可能是通过.map()方法完成的. (我不是ruby家伙…)

我想要的是一个简单的方法调用,比如Zend_DB_Table中的toArray(),而不是foreach,或类似的东西,但我似乎无法在他们的docs中找到它.

在PHP ActiveRecord中获取结果非常简单:

$settings = SystemSettings::all();

但它给出了这样的东西:

[0] => SystemSettings Object
    (
        [errors] => 
        [attributes:ActiveRecordModel:private] => Array
            (
                [param] => author
                [value] => Hawle
            )

        [__dirty:ActiveRecordModel:private] => Array
            (
            )

        [__readonly:ActiveRecordModel:private] => 
        [__relationships:ActiveRecordModel:private] => Array
            (
            )

        [__new_record:ActiveRecordModel:private] => 
    )

[1] => SystemSettings Object
    (
        [errors] => 
        [attributes:ActiveRecordModel:private] => Array
            (
                [param] => base_url
                [value] => example.com
            )

        [__dirty:ActiveRecordModel:private] => Array
            (
            )

        [__readonly:ActiveRecordModel:private] => 
        [__relationships:ActiveRecordModel:private] => Array
            (
            )

        [__new_record:ActiveRecordModel:private] => 
    )

虽然在很多情况下这真的很棒,但在这里,我只想拥有一个简单的数组,如下所示:

Array
    (
        [author] => Hawle
        [base_url] => example.com
    )
我有一个类似的问题,希望这可以帮助其他人偶然发现它.显然,这是phpactiverecord.org特有的.

在/lib/Model.php中我添加了以下函数:

public function to_array(array $options=array())
{
    return $this->serialize('array',$options);
}

在/lib/Serialization.php中,我添加了以下类

class arraySerializer extends Serialization
{
    public static $include_root = false;

    public function to_s()
    {
        return self::$include_root ? array(strtolower(get_class($this->model)) => $this->to_a()) : $this->to_a();
    }


}

然后我可以调用 – > to_array()并返回一个数组.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读