2012-03-28 86 views
1

我已经做了一个网上商店的衣服,可能我需要制作一些标签系统。CakePHP可搜索标签

整个应用程序基于CakePHP,我需要一个管理所有产品的想法,类似于eBay。

例如标记每个产品与它的pricetypeproducersizestatus

再举例来说,其中一些应该是多搜索,能够搜索与项目:$ 10之间价格和20美元,大小为S或M

+0

这些领域没有真正听起来像标签对我来说,这么多的领域产品表(或将被添加),它们可以使用分页系统轻松分类。 – jeremyharris 2012-03-28 14:06:26

回答

0

有一个属性表,它基本上充当键/值存储并将这些属性分配给每个产品。

属性本身可以有一个attribute_options表,您可以从中读取属性的不同可用大小。

然后,您只需搜索属性表和产品表。

0

从你所描述的,你不应该需要任何额外的表。只需将它们添加为产品表中的字段,然后根据该字段进行查询。它会更快,更逻辑地布置......等等。

你的例子可以像下面一样搜索。 (这似乎有点矫枉过正,反而会使任何未来的发现非常简单,并且遵循脂肪控制器,瘦模特的口头禅:已经在

//ProductsController 
public function whatever() { 
    $opts = array(
     'price_high' => 10, 
     'price_low' => 20, 
     'sizes' => array('S', 'M') 
    ); 
    $this->Product->getProducts($opts); 
} 


//Product Model 
public function getProduts($opts = null) { 

    //initialize variables 
    $params = array('conditions'=>array()); 

    //size(s) 
    if(!empty($opts['sizes']) { 
     array_push($params['conditions'], array('Product.size'=>$opts['sizes'])); 
    } 

    //price(s) 
    if(!empty($opts['price_high']) { 
     array_push($params['conditions'], array('Product.price <='=>$opts['price_high'])); 
    } 
    if(!empty($opts['price_low']) { 
     array_push($params['conditions'], array('Product.price >='=>$opts['price_low'])); 
    } 

    return $this->find('all', $params); 
}