如果您在显示产品列表时访问Newegg或B&H等网站,则会有多种过滤器选项,如品牌,价格,尺寸,颜色等。
对于这样的事情,什么是好的设计模式?
另外请记住,并非所有产品都有相同的选项 - 显示器将具有最大分辨率和屏幕尺寸,HDD将具有容量和连接类型等。
我唯一能想到的是在数据库中使用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,CakePHP 1.3,MySQL中构建它。
答案 0 :(得分:1)
使用规格模式。它是为此而建的。
我找不到一个好的PHP实现。但它不应该那么难建立。
答案 1 :(得分:0)
我要做的是为你正在查询的每个表创建一个过滤函数,并分别调用它们,它们将处理它们的过滤方式和过滤方式。
我的$ .02
http://dev.mysql.com/doc/refman/5.1/en/adding-functions.html