Спасибо за код. В моем случае свойства были типом список по этому написал так:
// Для строк фильтр LIKE %...%
if ($oProperty->type == 1)
{
foreach ($aPropertyValues as $propertyValue)
{
$Shop_Controller_Show->shopItems()->queryBuilder()
->where($tableName . '.value', 'LIKE', "%{$propertyValue}%");
}
}
elseif ($oProperty->type == 3)
{
foreach ($aPropertyValues as $propertyValue)
{
$oCore_QueryBuilder_Select_For_Modifications = Core_QueryBuilder::select('shop_items.modification_id')
->from('shop_items')
->leftJoin('shop_item_properties', 'shop_items.shop_id', '=', 'shop_item_properties.shop_id')
->leftJoin('property_value_ints', 'shop_items.id', '=', 'property_value_ints.entity_id',
array(
array('AND' => array('shop_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))
)
)
->where('shop_items.shop_id', '=', $oShop->id)
->where('shop_items.deleted', '=', 0)
->where('shop_items.active', '=', 1)
->where('shop_items.modification_id', '>', 0)
->where('shop_item_properties.property_id', '=', $oProperty->id)
->where($tableName . '.value', '=', $propertyValue)
->groupBy('shop_items.id');
$Shop_Controller_Show->shopItems()->queryBuilder()
->open()
->where($tableName . '.value', '=', $propertyValue)
->setOr()
->where('shop_items.id', 'IN', $oCore_QueryBuilder_Select_For_Modifications)
->close();
}
}
Работает.