Php Laravel 5.1-模型工厂错误种子

Php Laravel 5.1-模型工厂错误种子,php,laravel,laravel-5.1,laravel-seeding,Php,Laravel,Laravel 5.1,Laravel Seeding,嗨,我正在尝试用一些文章、博客类别和用户填充我的数据库 在执行“php artisan db:seed”时,出现以下错误: [ErrorException]参数2传递给 照明\数据库\雄辩\工厂::定义()必须可调用。 字符串已给定,已调用 第22行的C:\xampp\htdocs\2016\database\factories\ModelFactory.php 定义 我在我的模型中插入了所有关系,我的迁移做得很好 ModelFactory.php $factory->define(dix

嗨,我正在尝试用一些文章、博客类别和用户填充我的数据库

在执行“php artisan db:seed”时,出现以下错误:

[ErrorException]参数2传递给 照明\数据库\雄辩\工厂::定义()必须可调用。 字符串已给定,已调用 第22行的C:\xampp\htdocs\2016\database\factories\ModelFactory.php 定义

我在我的模型中插入了所有关系,我的迁移做得很好

ModelFactory.php

$factory->define(dixard\User::class, 'admin', function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->safeEmail,
        'password' => bcrypt('123'),
        'user_type' => 3,
        'remember_token' => str_random(10),
    ];
}); // line 22 

$factory->define(dixard\User::class, 'member', function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->safeEmail,
        'password' => bcrypt('123'),
        'user_type' => 1,
        'remember_token' => str_random(10),
    ];
});

$factory->define(dixard\BlogCategory::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->word,
    ];
});

$factory->define(dixard\Article::class, function (Faker\Generator $faker) {
    return [
        'title' => $faker->sentence,
        'content' => $faker->paragraph,
        'tags' => $faker->word,
        'user_id' => dixard\User::all()->random()->id,
        'category_id' => dixard\BlogCategory::all()->random()->id,
    ];
});
用户类型可以是0(客户),1(艺术家),3(管理员)是一个bolean字段

databaseSeeder.php

public function run()
    {
        Model::unguard();

        factory('dixard\User','admin', 3)->create();
        factory('dixard\BlogCategory', 5)->create();
        factory('dixard\Article', 20)->create();


        // $this->call(UserTableSeeder::class);
        $this->call(CategoryTableSeeder::class);
        $this->call(GenderTableSeeder::class);
        $this->call(ProductTableSeeder::class);
        $this->call(ColorTableSeeder::class);
        $this->call(BalanceTableSeeder::class);
        $this->call(ShippingsTableSeeder::class);
        $this->call(CouponTableSeeder::class);

        Model::reguard();
    }

谢谢你的帮助

我相信您打算在前两种方法中使用
defineAs()
而不是
define()

§“多种工厂类型”


您需要像这样重新定义ModelFactory

$factory->define(dixard\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->safeEmail,
        'password' => bcrypt('123'),
        'remember_token' => str_random(10),
        'user_type' = 1
    ];
});
然后在DatabaseSeeder文件中:

factory('dixard\User', 3)->create(['user_type'=>3]); // Create 3 admin users
factory('dixard\User', 3)->create(); // By default it will create 3 customer users
factory('dixard\BlogCategory', 5)->create();
factory('dixard\Article', 20)->create();
而不是

$factory->define(dixard\User::class'admin',函数(Faker\Generator$Faker)

对于每种方法,只需移除“生成器”,其应如下所示:


$factory->define(dixard\User::class'admin',function(Faker$Faker)

您的define方法中的第二个参数是什么?根据公认答案中链接的文档,我认为这不是正确的解决方案。
factory('dixard\User', 3)->create(['user_type'=>3]); // Create 3 admin users
factory('dixard\User', 3)->create(); // By default it will create 3 customer users
factory('dixard\BlogCategory', 5)->create();
factory('dixard\Article', 20)->create();