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

如何将laravel模型工厂创建方法返回的对象转换为包含模型字段的数组?,laravel,eloquent,laravel-6.2,laravel-factory,Laravel,Eloquent,Laravel 6.2,Laravel Factory,例如,我有一个UserFactory.php 尝试向模型类中添加类似的内容: public function getArr(){ foreach($this->attributes as $key => $val){ $array[$key] = $val; } return $array; } 如果您希望在每个模型中都使用此函数,您可以使用此函数创建trait,然后将其附加到模型类或扩展它的任何类中。

例如,我有一个
UserFactory.php


尝试向模型类中添加类似的内容:

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

如果您希望在每个模型中都使用此函数,您可以使用此函数创建trait,然后将其附加到模型类或扩展它的任何类中。

尝试向模型类添加类似的内容:

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

如果您希望在每个模型中都使用此函数,您可以使用此函数创建trait,然后将其附加到模型类或扩展它的任何类中。

您应该尝试使用factory的原始方法,而不是创建

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

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

您应该尝试使用factory的原始方法,而不是创建

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

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

您可以使用
json\u decode

// Laravel 7
$userArray = json_decode(factory(User::class)->create(), true);

// Laravel 8
$userArray = json_decode(User::factory()->create(), true);

您可以使用
json\u decode

// Laravel 7
$userArray = json_decode(factory(User::class)->create(), true);

// Laravel 8
$userArray = json_decode(User::factory()->create(), true);

谢谢你的回答。但这是最好的方法吗?使用循环是否有效?我的意思是在
User
model或任何laravel的helper函数中没有任何神奇的方法吗?嗯,你是对的。您只需在函数中返回具有相同效果的
$this->attributes
?我以前用
dd($user)
检查过。我可能还没有看到一个属性。我现在无法尝试。我很快会查出来的。Atributes属性受保护,这意味着你不能在类外访问它们,因此你需要使用公共函数来为你获取它们。否。如果将上述函数添加到模型类中,则可以执行
$array=$user->getArr()谢谢你的回答。但这是最好的方法吗?使用循环是否有效?我的意思是在
User
model或任何laravel的helper函数中没有任何神奇的方法吗?嗯,你是对的。您只需在函数中返回具有相同效果的
$this->attributes
?我以前用
dd($user)
检查过。我可能还没有看到一个属性。我现在无法尝试。我很快会查出来的。Atributes属性受保护,这意味着你不能在类外访问它们,因此你需要使用公共函数来为你获取它们。否。如果将上述函数添加到模型类中,则可以执行
$array=$user->getArr()