Поиск модификаций товара по значениям доп. свойств модификаций

Модератор
#
Re: Поиск модификаций товара по значениям доп. свойств модификаций
Galaxy,
это что такое вы распечатали? Покажите код
#
Re: Поиск модификаций товара по значениям доп. свойств модификаций

<?php
$shop_item_id = 250;
// Связь с модификациями товара
$oModifications = Core_Entity::factory('Shop_Item', $shop_item_id)
   ->Modifications;
// Массив условий отбора, ключ - ID свойства, значение - значение свойства
$aValues = array(83 => 844);
// Объединение с таблицами значений свойств
$oModifications
   ->queryBuilder()
   ->select('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`')))
   )
   );
// Устанавливаем ограничения по свойствам
foreach ($aValues as $iPropertyId => $iProeprtyValue)
{
   $oModifications
      ->queryBuilder()
      ->open()
      // Идентификатор дополнительного свойства
      ->where('shop_item_properties.property_id', '=', $iPropertyId)
      // Значание дополнительного свойства
      ->where('property_value_ints.value', '=', $iProeprtyValue)
      ->close()
      ->setOr();
}
$oModifications
   ->queryBuilder()
   ->groupBy('shop_items.id')
   // Количество свойств
   ->having('COUNT(shop_item_properties.shop_id)', '=', count($aValues));

$aModifications = $oModifications->findAll();
echo '<br />Total = ', count($aModifications);
foreach ($aModifications as $oModification)
{
//   print_r($oModification);
   echo '<br />', $oModifications;
}
?>


Код как в примере. Вписал свое доп.свойство. Тотал выводит 7 модификаций у которых это свойство установлено, а дальше такой массив.
Модератор
#
Re: Поиск модификаций товара по значениям доп. свойств модификаций
Galaxy,
у вас ошибка, обратите внимание, в результате findAll() возвращается массив, который записывается в $aModifications.
Далее
foreach ($aModifications as $oModification)

но печатаете вы $oModifications, а вовсе не $oModification
#
Re: Поиск модификаций товара по значениям доп. свойств модификаций
Спасибо! Как сам то не заметил
#
Re: Поиск модификаций товара по значениям доп. свойств модификаций
а если доп. свойство - список?
Модератор
#
Re: Поиск модификаций товара по значениям доп. свойств модификаций
Dremlin,
Значения списков у допсвойств хранятся в таблице property_value_ints, хранятся в виде идентификатора элемента списка
Авторизация