首页 > 解决方案 > 拉拉维尔。调用 toArray() 后,attribute 属性值发生变化

问题描述

我想从客户表中获取地址数据。但我的地址数据包括国家、城市和地址。因此,我想将地址字段设置为国家、城市和地址三个字段。

以下是我的代码

    $result = Customer::select('customers.address AS country', 'customers.address AS city', 'customers.address')->get();
    dump($result[0]); // First result

    $temp = $result->toArray();
    dd($temp[0]); // Second result

以下是我的问题:

  1. 为什么国家和城市在属性属性中发生了变化?我什么也没做。

这是魔术。我将 [country] 更改为 [countrys] 并将 [city] 更改为 [citys]。以下是我的新代码

$result = Customer::select('customers.address AS countrys', 'customers.address AS citys', 'customers.address')->get();
        dump($result[0]);

        $temp = $result->toArray();
        dd($temp[0]);

国家和城市的属性属性不再变化。

输出图片:

任何人都可以高我为什么?这真的很奇怪。

标签: phpdatabaselaravel

解决方案


根据 Laravel 文档:

toArray方法将集合转换为普通的 PHP 数组。如果集合的值为Eloquent models,则模型也将转换为数组

阿斯洛

toArray还将集合的所有嵌套对象转换Arrayable为数组的实例。如果要获取原始底层数组,请改用 all 方法。

Laravel -> 集合 -> toArray()


推荐阅读