Из того, что вы описываете, вам не нужно никаких дополнительных таблиц. Просто добавьте их в виде полей в таблице продуктов и выполните запрос на основе этого. Это будет быстрее, более логично выложено ... и т.д.
Ваш пример будет доступен для поиска, как показано ниже. (Кажется, это немного излишне, но сделает любые будущие находки действительно простыми и следует за толстым контроллером, тощей моделью мантры:
//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);
}