Laravel. После вызова toArray () значение в свойстве атрибута изменяется - PullRequest
0 голосов
/ 18 марта 2020

Я хочу получить адресные данные из таблицы клиентов. Но мои адресные данные включают страну, город и адрес. Поэтому я хочу сделать поле адреса страны, города и адреса тремя полями.

Ниже указан мой код

    $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. Почему страна и город изменились в свойстве атрибута? Я ничего не делал.

Это волхвы c. Я изменяю [страна] на [страны] и [город] на [города]. Ниже приведен мой новый код

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

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

Страны и города больше не менялись в свойстве атрибутов.

Выходное изображение:

Кто-нибудь может высказать мне почему? Это действительно странно.

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Ниже приведен мой код для решения моего вопроса [Почему страна и город изменились в свойстве атрибута?]

// Add the following code to Customer model
public function setCountryAttribute($value)
{
    $this->attributes['country'] = $value;
}

public function getCountryAttribute()
{
    return $this->attributes['country'];
}

public function setCityAttribute($value)
{
    $this->attributes['city'] = $value;
}

public function getCityAttribute()
{
    return $this->attributes['city'];
}
0 голосов
/ 18 марта 2020

Согласно Laravel Документация:

Метод toArray преобразует коллекцию в простой PHP массив . Если значения коллекции Eloquent models, модели также будут преобразованы в массивы

Aslo

toArray также преобразует все вложенные объекты коллекции, которые являются экземпляр Arrayable в массив. Если вы хотите получить необработанный базовый массив, используйте вместо него метод all.

Laravel -> Collection -> toArray ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...