У меня есть три модели: User, Category и Article.
Article принадлежит как User, так и Category, где внешние ключи user_id и category_id равны not null.
Я потерялся, пытаясь заполнить базу данных поддельными данными через фабрики, соответственно, вот код заполнения …
// 2 categories and 12 articles, 6 per category
// TODO: A user should have 6 articles with mixed categories
// 3 from each category
// So we will have 2 users
factory(Category::class, 2)->create()->each(function($category) {
factory(User::class)->create()->each(function($user) use ($category) {
// How to assign an Article to $category or $user while creating?
$user->articles()->createMany(
factory(Article::class, 3)->make()->toArray()
); // category_id can't be null
// OR
$category->articles()->createMany(
factory(Article::class, 3)->make()->toArray()
); // user_id can't be null
});
});
Я получу одну из двух ошибок, либо
Столбец user_id не имеет значения по умолчанию
Or
Столбец category_id не имеет значения по умолчанию
Что логично из-за Article миграции таблицы
$table->increments('id');
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->unsignedInteger('category_id');
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
Как я могу передать category_id или user_id заводскому вызову?
Есть ли лучший способ добиться этого?
заранее спасибо
Добавить их вот так? factory(Article::class, 3)->make(['category_id' => $category->id])->toArray() Это работает? — person Salim Djerbouh schedule 20.09.2019
@kerbholz да, спасибо, дайте ответ, и я проголосую и приму — person Salim Djerbouh schedule 20.09.2019
