使用外键字段Laravel 5.3创建Seeder

时间:2017-02-19 19:40:14

标签: laravel laravel-5.3 laravel-seeding

我正在尝试为我的表地址创建一个播种器,但是我的表中的一个字段是外键,这个Fk引用了我的表用户的用户ID。

我的播种机类:

class AddressesSeeder extends Seeder
{

   public function run()
    {
        $faker = Faker::create();
        // following line retrieve all the user_ids from DB
        $users = User::all()->pluck('id');
        foreach(range(1,50) as $index){
            $address = Address::create([
                'user_id' => $faker->randomElement($users), 
                'street' => $faker->street,
                'number' => $faker->number,
                'city' => $faker->city,
                'state' => $faker->state,
                'created_at' => $faker->datetime,
                'updated_at' => $faker->datetime,
            ]);
        }
    }
}

当我运行db:seed时,我收到了错误:

[ErrorException]   传递给Faker \ Provider \ Base :: randomElements()的参数1必须是类型数组,给定对象,在C:\ xampp \ htdocs \ projeto \ vendor \ fzaninotto \ fake中调用   第205行的r \ src \ Faker \ Provider \ Base.php并定义了

1 个答案:

答案 0 :(得分:0)

这是因为pluck()将返回一个对象,使用toArray()来解析它。

$users = User::all()->pluck('id')->toArray();