Есть 3 инфоблока: Улица, Город, Страна и все они соединены последовательно через привязку к элементам. Мне необходимо отфильтровать все улицы которые не находятся в определённой стране, например с ID = 1.
Сперва думал это будет достаточно просто:
Код |
---|
$order = array();
$filter = array('IBLOCK_ID' => 3, '!PROPERTY_CITY.PROPERTY_COUNTRY' => '1');
$select = array('ID', 'NAME', 'CODE', 'PROPERTY_CITY', 'PROPERTY_CITY.PROPERTY_COUNTRY');
$item = CIBlockElement::GetList($order, $filter, false, array('nPageSize' => 1), $select);
print_r($item->Fetch());
|
Но в выводе я вижу что PROPERTY_CITY_PROPERTY_COUNTY => 1, в том числе он неверен если я убираю отрицание и ставлю другую (отличную от еденицы) страну.
Воспользовался SubQuery:
Код |
---|
$order = array();
$filter = array('IBLOCK_ID' => 3, '!PROPERTY_CITY.PROPERTY_COUNTRY' => '1');
$select = array('ID', 'NAME', 'CODE', 'PROPERTY_CITY', 'PROPERTY_CITY' => CIBlockElement::SubQuery('ID', array('IBLOCK_ID' => 2, '!PROPERTY_COUNTRY' => '1'));
$item = CIBlockElement::GetList($order, $filter, false, array('nPageSize' => 1), $select);
print_r($item->Fetch()); |
Результат идентичен. Где я ошибся? Спасибо