2011-05-23 66 views
0

如果你去像NeweggB&H一个网站时,他们表现出的产品清单,有喜欢的品牌,价格,尺寸,颜色等过滤产品的设计模式?

什么是这样的一个好的设计模式几个过滤器选项?

还要记住,并不是所有的产品具有相同的选项 - 监视器将有一个最大的分辨率和屏幕尺寸,一个硬盘驱动器将有一个容量和连接类型等

我可以唯一考虑在数据库中使用EAV体系结构来为每个产品绑定所有过滤选项,然后在加载所有产品时,拉取所有选项并显示适用类别的过滤选项。这听起来并不像它能够很好地扩展,但仍然让我想知道如果只有一半的产品显示有特定选项(屏幕尺寸),我该怎么办。

product(id, name, price, etc.) // 1, "Cool Monitor", 200.00 

filter_options(id, option) // 3, "Screen Size" 

product_filters(product_id, filter_id, value) // 1, 3, "22.in" 

我不想重新发明轮子或想出一个过于复杂的解决方案,如果已经有一个这样的事情已知的模式。我猜这是因为我近来看到这很多。

如果它很重要我用PHP构建这个PHP,CakePHP 1.3。

回答

1

使用的规范模式。它是为此而构建的。

虽然我找不到一个好的php实现。但建立起来应该不那么难。