Как преобразовать возврат объекта методом laravel фабрики создания модели в массив, содержащий поля модели? - PullRequest
1 голос
/ 23 января 2020

Например, у меня есть UserFactory.php

<?php

use App\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;

$factory->define(User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'role' => 'USER',
        'password' => 'sasdcsdf34', // password
        'remember_token' => Str::random(10),
    ];
});

Теперь я могу создать пользователя следующим образом

$user = factory(User::class)->create();

Теперь, как я могу преобразовать этот $user объект в массив, содержащий информацию о пользователе, такую ​​как имя, адрес электронной почты и т. д. c, без инициализации нового массива и назначения каждого свойства объекта $user вручную. ??

Я не хочу назначать вручную, как указано ниже, так как это утомительно, если в $user object * много свойств


       $userArray=[     
            'id' => $user->id,
            'name' => $user->name,
            'email' => $user->email 
             ]

Я пробовал это, но он создает массив, содержащий различные другие свойства и необходимые фактические значения вложены в свойства

$userArray=array($user)

1 Ответ

2 голосов
/ 23 января 2020

Попытайтесь добавить что-то вроде этого в свой класс модели:

public function getArr(){
        foreach($this->attributes as $key => $val){
            $array[$key] = $val;
        }
        return $array;
    }

Если вы хотите иметь эту функцию в каждой модели sh, вы можете создать черту с помощью этой функции, а затем просто присоединить ее к модели. класс или любой класс, расширяющий его.

...