Yêu cầu thg 7 8, 2021 8:13 SA 109 1 2
  • 109 1 2
0

Làm sao để lưu lựa chọn của sản phẩm vào databse ?

Chia sẻ
  • 109 1 2

Hi mọi người! Em đang làm một đồ án về đặt hàng thức uống.

Sản phẩm(Product) thì có thể nhiều các lựa chọn khác nhau (Option) như size, đá, đường , và các loại Topping khác nhau. Option thì có thể có nhiều sản phẩm cùng dùng chung nhưng giá của chúng có thể khác. Còn trong bảng Topping thì mức giá được dùng chung cho tất cả sản phẩm. Khi chọn sản phẩm thì khách hàng có thể chọn các option cũng như topping ở trên và lưu vào giỏ hàng (Cart)

*Ví dụ: *

  • Sản phẩm A:
    • Option: Size (S,M) -> S (+0), L (+6000)
    • Topping : trân châu trắng(+5000), trân châu đen(+3000)
  • Sản phẩm B:
    • Option Size (S,M,L) , Đá(Không đá, đá vừa, nhiều đá) -> S(+0) M +(5000), L (+10000), Đá không tính tiền thêm
    • Topping: Whipping Cream(+5000), Chocolate(+5000), Trân châu trắng(+5000), trân châu đen(+3000)

Như vậy, em có bảng Product, Option,Topping, ProductOption, ProductTopping:

  • Product(name, price, ...)
  • Option(name,...)
  • Topping(name,price)
  • ProductOption(product_id, option_id, price,isDefault, ..) - default = true thì price là 0, price là giá cộng thêm hoặc trừ bớt so với giá gốc
  • ProductTopping(product_id, topping_id,..)

Em có làm và show rât Oke nhưng khi khách bỏ vào Giỏ hàng thì làm sao có thể lưu được tất cả các thuộc tính ở trên vào giỏ à ?

Em có cần phải tạo thêm bảng CartOption và CartTopping không ạ ?

Em còn một thắc mắc nữa là mình sao khi lưu Cart được rồi thì có cần phải sao chép tất cả các thuộc tính của Product vào Order không ạ ?

Em cảm ơn mọi người quan tâm câu hỏi của em ✋

thg 7 9, 2021 2:36 SA

2 CÂU TRẢ LỜI


Đã trả lời thg 7 9, 2021 4:03 SA
Đã được chấp nhận
0

Bạn tạo thêm 1 trường rồi lưu dạng json đó bạn thì sẽ giải quyết được 2 câu hỏi của bạn ở trên: [ "productA": { "option": ..., "topping": ... }, "productB": { "option": ..., "topping": ... }, ]

không cần tạo thêm bảng CartOption và CartTopping không cần phải sao chép tất cả các thuộc tính của Product vào Order vì cái đoạn json kia bạn có thể xử lí được hết ngoài ra bạn có thể tham khảo hoặc tự nghĩ thêm cách khác

Chia sẻ
thg 7 9, 2021 6:00 SA

Cảm ơn a . Vậy làm sao để có thể lưu lại đc chi tiết đơn hàng đó (bao gồm cả số option và topping đã lựa chọn) khi khách hàng tìm lại đơn hàng cũ để xem ạ

thg 7 12, 2021 1:47 SA

@sucanabo lưu cả vào json đó bạn [ "productA": { "option": {"size": L, "soluong": 5}, "topping":["chan chau trang", "chantrau den"] }, "productB": { "option": ..., "topping": ... }, ]

thg 7 12, 2021 10:28 SA

@hoangkim1982 phải ý của anh là lưu cả json vào một column trong cart luôn ạ ❤️.

Đã trả lời thg 7 8, 2021 8:37 SA
0

Sao bạn không lưu các lựa chọn vào cookie ở trình duyệt cho tiện, mỗi khi khách thay đổi giỏ hàng lại phải cập nhật csdl thì hơi bất tiện.

Chia sẻ
thg 7 8, 2021 8:50 SA

Mình viết app mobile á bạn.. Tại vì mình muốn khách hàng có thể coi lại lịch sử đơn hàng gồm những gì và chi tiết của mỗi món hàng trong đơn. Nên mình tự hỏi có lưu vào db hay không, và làm cách nào để lấy dữ liệu đó ra để xem

Avatar Tran Minh Nhat @tranminhnhat
thg 7 8, 2021 9:19 SA

@sucanabo À, nếu app mobile thì bạn có thể lưu vào local storage: sqlite, shared preferences hoặc file đều được mà. Đằng nào dữ liệu của app bạn vẫn lưu trên server rồi đúng không. Tiện nhất theo mình là lưu ra file hoặc shared preferences, đỡ phải mất công tạo bảng truy vấn.

thg 7 9, 2021 5:58 SA

@tranminhnhat Mình hiểu vấn đề bạn nói rồi .. nhưng làm sao khi khách hàng xem lại lịch sử đơn hàng thì có thể thấy lại chi tiết đơn đó như nào b?

thg 7 9, 2021 7:27 SA

Cũng tùy vào nhu cầu mà, nếu lưu vào DB, tạo giỏ hàng trên web thì dưới mobile cũng thấy giỏ hàng được cập nhật giống vậy. Đó sẽ mang lại trải nghiệm tốt cho người dùng.

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí