У меня есть три модели, 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 не имеет значения по умолчанию
Или
Столбец 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
на заводской вызов?
Есть ли лучший способ добиться этого?
Заранее спасибо