Laravel Factories and Seeding: Статический массив массивов - PullRequest
0 голосов
/ 12 мая 2019

Для некоторых из моих таблиц я хотел бы вставить фиксированное количество строк с конкретными данными.

Это фабрика моих категорий:

$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() expects parameter 2 to be string, array given

Есть ли способ вставить фиксированное количество статической информации в определенные таблицы с помощью заполнения и фабрик?

1 Ответ

1 голос
/ 12 мая 2019

Я думаю, что вы хотите использовать Seeder со статическими значениями, если я прав, вы должны использовать

Определить категорию сеялки

<?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);
        }
    }
}

И в DatabaseSeeder

<?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, и это будет сделано.

...