Итак, у меня есть проект, по которому клиент может заказать еду.Продукты хранятся в корзине, а затем вставляются в базу данных.Я хочу создать таблицы «Заказы и продукты», но также хочу сохранить количество и итоговую цену для каждого продукта. Заказы и продукты имеют отношение N: N.Вот мои миграции таблиц:
Schema::create('orders', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('product_id');
$table->enum('status',['open','closed']);
$table->timestamps();
});
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description')->nullable();
$table->float('price',8,2);
$table->string('image_path');
$table->timestamps();
});
Сводная таблица:
Schema::create('order_product', function (Blueprint $table) {
$table->integer('order_id')->unsigned()->nullable();
$table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade');
$table->integer('product_id')->unsigned()->nullable();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->timestamps();
});
Я вижу решение следующим образом:
- добавить количество и промежуточный итогатрибуты для сводной таблицы (которые я не уверен, хорошо это или плохо)
- вставлять строки для каждого определенного количества продукта (что создаст много строк для одного и того же заказа, и я неконечно, если это тоже хорошо).
Можете ли вы указать мне лучшее решение?Я новичок в веб-разработке.