2012-03-28 83 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); 
}