首页 > 解决方案 > 如何将 laravel 模型工厂创建方法返回的对象转换为包含模型字段的数组?

问题描述

例如,我有一个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对象转换为包含用户信息(如姓名、电子邮件等)的数组,而无需初始化新数组并手动分配每个$user对象属性。??

我不想像下面这样手动分配,因为如果$user对象中有很多属性会很乏味


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

我已经尝试过了,但是它创建了包含各种其他属性的数组,并且需要的实际值嵌套在属性中

$userArray=array($user)

标签: laraveleloquentlaravel-6.2laravel-factory

解决方案


您应该尝试使用工厂的原始方法而不是创建。

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

这应该为您提供一个可以使用的数组。


推荐阅读