Как вставить данные через посев Laravel 5.7 в две таблицы отношений?

Когда я хочу выполнить команду php artisan db: seed в терминале, я вставляю точно такое же количество строк в одну таблицу (таблица сообщений) из исходного файла (PostSeed). Например, 3 ряда.

Кроме того, я определил 6 строк для вставки 6 строк в другую таблицу (таблица клиентов) из исходного файла (ClientSeed).

Проблема возникла после того, как я выполнил команду php artisan db: seed, у меня есть 9 строк в таблице Clients. Таблица Posts хороша, но таблица Client как-то добавляет еще 3 строки.

Это моя ссылка кода https://github.com/mihnikola/laravel.git


person Jefrey    schedule 19.02.2019    source источник


Ответы (1)


Это происходит потому, что ваш PostFactory также создает новый Client.

'client_id' => function () {
    return factory(App\Client::class)->create()->id; // <- This will create a new client
}

Таким образом, 3 поста будут созданы с 3 клиентами.

6 + 3 = 9

person Thomas Van der Veen    schedule 19.02.2019
comment
Я не вижу причин удалять лишних клиентов после вашего seed, поскольку вы загружаете фальшивые данные. Однако вы можете иметь в виду кое-что еще. Почему у вас всего 6 клиентов? - person Thomas Van der Veen; 19.02.2019
comment
Спасибо Томасу Ван дер Вин. - person Jefrey; 19.02.2019
comment
Я хочу иметь 6 клиентов и 10 постов. Но я понятия не имею, как это сделать. - person Jefrey; 19.02.2019
comment
Я нахожу способ. Я что-то меняю на PostFactory. - person Jefrey; 19.02.2019