あなたの説明から、追加のテーブルは必要ありません。商品表のフィールドとして追加し、それに基づいてクエリを実行するだけです。それはもっと速く、より論理的にレイアウトされます...等。
あなたの例は以下のように検索可能です。 (それは少し行き過ぎようだが、将来は本当に簡単見つけ、脂肪のコントローラを以下の、スキニーモデルマントラようになります。これらのフィールドの
//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);
}
どれも実際に、私にはタグのように、すでに上のフィールドとしてそんなに音しません(または追加される)テーブルであり、ページネーションシステムを使用して簡単にソート可能です。 – jeremyharris