CakePHP可搜索标签

时间:2012-03-28 12:08:22

标签: php cakephp tags e-commerce

我已经在网上开了衣服店,我可能需要制作一些标签系统。

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

例如,使用pricetypeproducersizestatus

标记每个产品

例如,其中一些应该是多搜索的,以便能够搜索价格在10美元到20美元之间的商品,尺寸为S或M

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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);
}