カートに商品以外の商品券などをいれたいときのデータベース設計などの考え方がわかりません
スマートな方法があれば教えて下さい
現在は商品のみがカートの入れられるようになっており、
カートはデータベースを利用しています
商品には以下のカラムがあり
productテーブル
下記に追記で編集しました
商品券には以下のカラムがあります
productmoneyテーブル
下記に追記で編集しました
カートカラムは
cartテーブル
下記に追記で編集しました
となっています
このまま、カートテーブルに
productmoney_idカラムを追加して
商品券がカートにあった場合はcartテーブルのproductmoney_idカラムに値が存在してproduct_idには値が存在しな状態にする
そうなると、foreachで取り出すときにも商品テーブルと関連したテーブルをjoinした結果と商品券テーブルと関連したテーブルののjoinした結果を取り出す形になるのですが
通常、このような商品や商品券みたいに種別が全く異なる商品を同時にカートへ入れたい場合などは
どのように考えるのがスマートでしょうか?
カートを2つ用意するような場合もあるのでしょうか?
以上、よろしくおねがいします
追記:
テーブル定義 カート CREATE TABLE `carts` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` INT(11) NOT NULL, `product_id` INT(11) NOT NULL, `quantity` INT(11) NOT NULL, `created_at` TIMESTAMP NULL DEFAULT NULL, `updated_at` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) 商品 CREATE TABLE `products` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `customer_id` BIGINT(20) UNSIGNED NOT NULL, `title` VARCHAR(50) NOT NULL, `detail` TEXT(65535) NOT NULL COLLATE 'utf8mb4_general_ci', `about_url` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci', `price` INT(10) UNSIGNED NOT NULL, `total_stock` INT(10) UNSIGNED NULL DEFAULT NULL, `start_date` DATETIME NULL DEFAULT NULL, `end_date` DATETIME NULL DEFAULT NULL, `img` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci', `undisclosed_at` DATETIME NULL DEFAULT NULL, `deleted_at` TIMESTAMP NULL DEFAULT NULL, `created_at` TIMESTAMP NULL DEFAULT NULL, `updated_at` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) 商品券 CREATE TABLE `product_money` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `title` VARCHAR(50) NOT NULL, `price` INT(10) UNSIGNED NOT NULL, `total_stock` INT(10) UNSIGNED NULL DEFAULT NULL, `deleted_at` TIMESTAMP NULL DEFAULT NULL, `created_at` TIMESTAMP NULL DEFAULT NULL, `updated_at` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE )
回答1件
あなたの回答
tips
プレビュー