Документация для разработчиков

SubQuery

object
CIBlockElement::SubQuery(
 string strField,
array arFilter
 );

Позволяет использовать подзапросы. Метод статический.

Примечание: применимо только к полю ID элемента основного запроса.

Параметры вызова

Параметр Описание
strField Название поля, по которому будет осуществляться фильтрация.
Возможные значения:
  • ID - по идентификатору элемента
  • PROPERTY_<PROPERTY_CODE> - по значению свойства, где PROPERTY_CODE - это ID или символьный код свойства привязки. Свойство должно быть типа "привязка к элементам".
arFilterФильтр элементов тот же, что и в методе CIBlockElement::GetList.

Возвращаемое значение

Объект подзапроса.

См. также

Примеры использования

<?
//Выбрать авторов написавших книги в 21-ом веке.
if(CModule::IncludeModule('iblock'))
{
$rsBooks = CIBlockElement::GetList(
array("NAME" => "ASC"), //Сортируем по имени
array(
"IBLOCK_ID" => $AUTHOR_IBLOCK,
"ACTIVE" => "Y",
"ID" => CIBlockElement::SubQuery("PROPERTY_AUTHOR", array(
"IBLOCK_ID" => $BOOK_IBLOCK,
">=PROPERTY_PRINT_DATE" => "2000-01-01 00:00:00",
)),
),
false, // Без группировки
false, //Без постранички
array("ID", "IBLOCK_ID", "NAME") // Выбираем только поля необходимые для показа
);
while($arBook = $rsBooks->GetNext())
echo "<li>", $arBook["NAME"],"\n";
}
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
4
Дмитрий Чернояров
Такая схема хорошо работает как исключающий фильтр по множественному свойству, т.к. поддерживается тип проверки фильтра "отрицание" ("!").
Код
<?
...

$arFilter = array(
   'IBLOCK_ID' => $IBLOCK_ID,
   'SECTION_ID' => 3,
   'PROPERTY_'.PROP_PRODUCT_TYPE_ID => array('542'),
   '!ID' => CIBlockElement::SubQuery("ID", array(
      "IBLOCK_ID" => $IBLOCK_ID,
      'SECTION_ID' => 3,
      "PROPERTY_".PROP_PRODUCT_TYPE_ID => array('532'),
     )
);

...

?>
© «Битрикс», 2001-2018, «1С-Битрикс», 2018
Наверх