Я хочу заполнить свою базу данных более точными значениями.У меня есть 4 таблицы базы данных: Пользователь, Заказ, Продукты и Заказ_Продукты.Последняя таблица является сводной таблицей между заказом и продуктами.Я добавил два поля в эту сводную таблицу: сумма и цена.Теперь я хочу заполнить все эти таблицы фейкерными данными.Если я оставлю два дополнительных поля, это работает с кодом ниже.Если я добавлю два дополнительных поля в моей миграции.Я получаю ошибку (очевидно).Но как мне заполнить дополнительные поля из моей сводной таблицы?Заранее спасибо.
Он работал без дополнительных полей в моей сводной таблице, но знаю, что я хочу, чтобы дополнительное поле также было заполнено данными фейера.
Заводской заказ
$factory->define(App\Order::class, function (Faker $faker) {
return [
'orderdate' => now(),
'amount' => $faker->randomFloat(2,0,6)
];
});
Заводской продукт
$factory->define(App\Product::class, function (Faker $faker) {
return [
'name' => $faker->name,
'description' => $faker->sentence(),
'price'=> $faker->randomFloat(2,0,6)
];
});
Сеялка
public function run()
{
factory(App\User::class, 5)->create()->each(function ($user) {
$user->orders()
->saveMany(factory(App\Order::class, 2)
->create(['user_id' => $user->id])
->each(function ($order){
$order->products()
->saveMany(factory(App\Product::class, 3)
->create());
})
);
});
}
Сводная таблица миграции
public function up()
{
Schema::create('order_product', function (Blueprint $table) {
$table->unsignedBigInteger('order_id');
$table->unsignedBigInteger('product_id');
$table->integer('amount');
$table->float('price',8,2);
});
Schema::table('order_product', function($table) {
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade');
$table->primary(['order_id', 'product_id']);
});
}