Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как сделать выборку по множественному свойству с условием «AND» ?

00 голосов
5
Есть инфоблок. Есть множественное свойство (с кодом, например, «user») типа «Привязка к пользователю».
Как выбрать элементы, имеющие в этом свойстве значение 2 и 3, где 2 и 3 - идентификаторы пользователей?

То есть требуется выбрать только те элементы, у которых в множественном свойстве «user» установлены два значения - «2» и «3».

'?PROPERTY_user' => '2 && 3' в фильтре не работает - не возвращает записей.
спросил 17 Ноя, 13 от deell (100 баллов)

5 Ответы

00 голосов
Код
$arFilter = array("PROPERTY_user"=>Array(2,3));

или
Код
$arFilter = array(array("LOGIC" => "AND", array("PROPERTY_user" => 2), array("PROPERTY_user" => 3)));
ответил 04 Янв, 14 от Runnar (1,000 баллов)
00 голосов
Это всё я пробовал.
Код
$arFilter = array("PROPERTY_user"=>Array(2,3));
- это работает как «ИЛИ», а мне нужно «И».
Код
$arFilter = array(array("LOGIC" => "AND", array("PROPERTY_user" => 2), array("PROPERTY_user" => 3)));
возвращает «DB query error».
ответил 20 Апр, 14 от deell (100 баллов)
00 голосов
Цитата
Тимофей Гурьев пишет:
возвращает «DB query error»

Какая ошибка, детальнее, пожалуйста.
Попробуйте PROPERTY_user_VALUE использовать.
ответил 14 Авг, 14 от Almarea (3,760 баллов)
00 голосов
PROPERTY_user_VALUE пробовал, та же история.

Сейчас вот этот код (на специально созданном для решения проблемы инфоблоке) приводит к ошибке sql
Код
$arFilter = array(
   'IBLOCK_ID'      => 19,
   array(
      'LOGIC'       => 'AND',
      array('PROPERTY_USER'   => 1),
      array('PROPERTY_USER'   => 2),
   )
);
$resElements = CIBlockElement::GetList(
   Array("date_active_from"=>"DESC"),
   $arFilter,
   false,
   false,
   Array("ID",   "NAME",   "PROPERTY_user")
);


Собственно сообщение об ошибке в файле логов.
Код
2010-11-01 14:11:25 - main -  MySql Query Error: SELECT DISTINCT BE.ID as ID,BE.NAME as NAME, FPV1.VALUE as PROPERTY_USER_VALUE, FPV1.ID as PROPERTY_USER_VALUE_ID,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as ACTIVE_FROM FROM b_iblock B    INNER JOIN b_lang L ON B.LID=L.LID    INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID  LEFT JOIN b_iblock_property FP1 ON FP1.IBLOCK_ID=B.ID AND  FP1.CODE='USER'  LEFT JOIN b_iblock_element_property FPV1 ON FP1.ID=FPV1.IBLOCK_PROPERTY_ID    AND FPV1.IBLOCK_ELEMENT_ID=BE.ID WHERE 1=1  AND B.ID IN (0,19)    AND    (       (BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)    ) AND ((((BE.IBLOCK_ID = '19'))))  AND ((((BE.0='AND')) OR ((BE.0='')) OR ((BE.0=''))))  ORDER BY BE.ACTIVE_FROM desc  [Unknown column 'BE.0' in 'where clause']
ответил 19 Дек, 14 от deell (100 баллов)
00 голосов
Локаль где нибуть в коде устанавливаете?
ответил 08 Апр, 15 от Runnar (1,000 баллов)

Похожие вопросы

0 голосов
10 ответов
0 голосов
3 ответов
0 голосов
2 ответов
спросил 14 Фев, 14 от Lollipopk (660 баллов)