Re: Показ схожих информационных элементов на основе дополнительного свойства
Dmitry K.,
а зачем вы внутри цикла делаете N объединений и ограничений. Ваш блок
$Informationsystem_Controller_Show
->informationsystemItems()
->queryBuilder()
добавляет ограничения на выборку столько раз, сколько у вас значений свойств.
Всё работает хорошо, вот к примеру страница - https://www.mebelib.ru/wood-tree/cocobolo/
Но в таблицу Похожие по свойствам виды древесины попадает и сам текущий элемент, в данном случае Кокоболо.
А как сделать так, чтобы в данной программной конструкции исключить текущий элемент?
По самим доп. свойствам я этого сделать не могу.
Пытаюсь это сделать по принципу и на основе Ссылка на предыдущий и следующий товар в интернет-магазине.
Но у меня не получается. Что я делаю не так?
// Если мы находимся на странице инфоэлемента
if ($Informationsystem_Controller_Show->item) {
$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', $Informationsystem_Controller_Show->item);
// Текущий элемент и группа
$cur_elem = $Informationsystem_Controller_Show->item;
$cur_group = $oInformationsystem_Item->informationsystem_id;
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
->select(''informationsystem_items.id', 'informationsystem_items.item')
->from('informationsystem_items')
->where('active', '=', 1)
->open()
->where('informationsystem_items.id', '=', $cur_elem)
->where('informationsystem_items.id.item', '!=', $cur_elem->item)
->where('informationsystem_items.id.item_id', '!=', $cur_elem->item)
->close();
}
2) Почему у вас расчеты $delta264 ... и так далее идут после условия, а не внутри операторных скобок {}, которые уже есть внизу? по сути то, что в операторных операторных скобках, у вас выполняется уже независимо от условия в if(), от if() зависит у вас только первая строка после if - это $delta264 = intval($aPropertyValues264[0]->value) * $coef;