Php Laravel工厂和种子:静态数组

Php Laravel工厂和种子:静态数组,php,laravel,laravel-5,seeding,laravel-seeding,Php,Laravel,Laravel 5,Seeding,Laravel Seeding,对于我的一些表,我希望插入具有特定数据的固定数量的行 这是我的工厂: $factory->define(Category::class, function (Faker $faker) { return [ [ 'name' => 'Politics', 'slug' => 'politics', 'description' => 'To discuss politics'

对于我的一些表,我希望插入具有特定数据的固定数量的行

这是我的工厂:

$factory->define(Category::class, function (Faker $faker) {
    return [
        [
            'name' => 'Politics',
            'slug' => 'politics',
            'description' => 'To discuss politics'
        ],
        [
            'name' => 'News and Events',
            'slug' => 'news',
            'description' => 'To discuss news and world events'
        ],
        [
            'name' => 'Food and Cooking',
            'slug' => 'cooking',
            'description' => 'To discuss cooking and food'
        ],
        [
            'name' => "Animals and Nature",
            'slug' => 'animals-nature',
            'description' => 'To discuss politics'
        ]
    ];
});
这是播种机:

public function run() {
   factory(App\Category::class, 1)->create();
}
我得到这个错误:preg_match期望参数2是字符串,数组给定


有没有一种方法可以使用种子设定和工厂将固定数量的静态信息插入到某些表中?

我认为您希望使用带有静态值的种子设定器,如果我是正确的,您应该使用

定义类别播种机

<?php
use Illuminate\Database\Seeder;
use App\Category;

class CategorySeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $categories = [
             [
            'name' => 'Politics',
            'slug' => 'politics',
            'description' => 'To discuss politics'
        ],
        [
            'name' => 'News and Events',
            'slug' => 'news',
            'description' => 'To discuss news and world events'
        ],
        [
            'name' => 'Food and Cooking',
            'slug' => 'cooking',
            'description' => 'To discuss cooking and food'
        ],
        [
            'name' => "Animals and Nature",
            'slug' => 'animals-nature',
            'description' => 'To discuss politics'
        ]
        ];

        foreach ($categories as $category) {
            Category::create($category);
        }
    }
}
在数据库播种机中

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(CategorySeeder::class);
    }
}

现在运行php artisan db:seed,就可以完成了。

@Prafulla Kumar Sahu的答案是seeder,但您可以通过以下方式获得值:

$category = factory(App\Category::class)->make([
                'name' => 'Politics',
                'slug' => 'politics',
                'description' => 'To discuss politics'
            ]);
$category = factory(App\Category::class)->make([
                'name' => 'News and Events',
                'slug' => 'news',
                'description' => 'To discuss news and world events'
            ]);
$category = factory(App\Category::class)->make([
                'name' => 'Food and Cooking',
                'slug' => 'cooking',
                'description' => 'To discuss cooking and food'
            ]);
$category = factory(App\Category::class)->make([
                'name' => "Animals and Nature",
                'slug' => 'animals-nature',
                'description' => 'To discuss politics'
            ]);

伪造者被用来伪造数据。。使用播种机instead@ZeroOne,我刚从另一家使用假冒产品的工厂复制了一家工厂。我想把它去掉谢谢!我似乎误解了建立工厂的必要性。这非常有效,我倾向于在错误地调用php artisan db:seed时使用Eloquent的firstOrCreate方法来避免重复,例如:foreach$categories作为$category{category::firstOrCreatearray_only$category,['name',slug',array_除外$category,['name',slug];}假设name和slug列是唯一的。@zoltalar这没关系,当您输入静态值时,您知道大部分时间您在输入什么。