Битриксоид из Колхоза
===== Фильтр vs Референс getList ы-синонимы #битрикс #getlist #filter #reference
Ещё один синоним предыдущих двух getList-ов, пересобранный через Query.
Учитывая мнение ребят из чата в ответ на вопрос о том, что по производительности лучше:
— запрос слева или справа?
— практически равносильны... Саша @altavir порекомендовал топить за читабельность кода.
Так что вот...
#битрикс #getList #query
Учитывая мнение ребят из чата в ответ на вопрос о том, что по производительности лучше:
— запрос слева или справа?
— практически равносильны... Саша @altavir порекомендовал топить за читабельность кода.
Так что вот...
#битрикс #getList #query
0 -> NULL
Если вдруг по какой-то причине нам нужно перебрать все записи, у которых пользовательское поле равняется
Делаем обход через sys*-методы.
Внутри
#битрикс #orm #query #null
Если вдруг по какой-то причине нам нужно перебрать все записи, у которых пользовательское поле равняется
0
вместо NULL
и изменить значения (и мы хотим это сделать именно через ORM), при работе через EO-объект воспользоваться методом ->set
не получится, поскольку под капотом идёт сравнение через приведение типов. Новое значение не воспринимается как новое и перезапись не происходит.Делаем обход через sys*-методы.
Внутри
->sysSetValue
проверка нового и текущего значения идёт тоже через приведение типов, потому мы непосредственно перед вызовом сбрасываем актуальное значение в «ненольиненулл».#битрикс #orm #query #null
Проблема: при компиляции сущности для элементов инфоблока, поля свойств содержат сущность, скомпилированную без колонки
Прямо на лету (это-жеж-orm!) добиваем поле:
• получаем нужное поле из основной сущности;
• получаем референс-сущность;
• обучаем её колонке, которая упущена.
#битрикс #orm #fields #query
DESCRIPTION
.Прямо на лету (это-жеж-orm!) добиваем поле:
• получаем нужное поле из основной сущности;
• получаем референс-сущность;
• обучаем её колонке, которая упущена.
#битрикс #orm #fields #query
В примере выше можно заметить обёртку-хелпер для создания полей-выражений типа COUNT, MAX, MIN, SUM... для использования в запросе в select-е.
Чуть пристальнее (скриншот)
#выражения #expression #select #query
Чуть пристальнее (скриншот)
#выражения #expression #select #query
Пример работы с условиями в ORM (а-то что-то примеров по
...ну и отдельно показываю как дотянуться через скомпилированную сущность элементов до символьных кодов (xml_id) значений свойств типа список и использовать их в фильтре.
...ну и негатив там (в позитивном смысле)
#битрикс #orm #filter #query #condition #фильтр #свойства #enum
ConditionTree
не густо)....ну и отдельно показываю как дотянуться через скомпилированную сущность элементов до символьных кодов (xml_id) значений свойств типа список и использовать их в фильтре.
...ну и негатив там (в позитивном смысле)
#битрикс #orm #filter #query #condition #фильтр #свойства #enum
Разноплановый пример работы с ORM.
Задача: получать путь к файлу-картинке раздела (поле
Обведённое жёлтым — код-кандидат на то, чтобы его вынести в хелпер. Методу хелпера передаём сущность и код поля для построения референса (чтобы можно было обучать сущности не только разделов, но и элементов). Метод обучает сущность нужным полям и мы потом просто делаем выборку.
Код на pastebin.
#битрикс #orm #query #разделы #файлы
Задача: получать путь к файлу-картинке раздела (поле
PICTURE
) сразу в выборке, чтобы потом не перебирать в коде и не получать дополнительно через CFile::GetPath()
.Обведённое жёлтым — код-кандидат на то, чтобы его вынести в хелпер. Методу хелпера передаём сущность и код поля для построения референса (чтобы можно было обучать сущности не только разделов, но и элементов). Метод обучает сущность нужным полям и мы потом просто делаем выборку.
Код на pastebin.
#битрикс #orm #query #разделы #файлы
Конструктор выражения собирает правило через
#битрикс #expression #query #условия #выражения
sprintf
и значит мы можем использовать возможности этой функции#битрикс #expression #query #условия #выражения
Когда мы компилируем сущность по API-коду инфоблока, нам в выборке кроме основных полей могут понадобиться свойства. Если пишем хелпер — так вообще все свойства (которых может быть много, плюс они могут расширяться).
Если объекту
Однако же сущность знает про свойства элементов. Воспользуемся этим знанием, чтобы избавить себя от ручного указания свойств.
#битрикс #orm #query
Если объекту
Query
в качестве полей для select-а указать ['*']
, будут отобраны все основные поля, а свойства — нет. То есть свойства нужно прописывать явно.Однако же сущность знает про свойства элементов. Воспользуемся этим знанием, чтобы избавить себя от ручного указания свойств.
#битрикс #orm #query
🦉
>>> Урлы разделов и элементов через ORM <<<
Вынес в статью, потому что слишком многобукаф для телеги 😱
Код моментами выглядит криповато, но результат мне нравится 🧜♂️😍
#битрикс #orm #query
DETAIL_PAGE_URL
, SECTION_PAGE_URL
>>> Урлы разделов и элементов через ORM <<<
Вынес в статью, потому что слишком многобукаф для телеги 😱
Код моментами выглядит криповато, но результат мне нравится 🧜♂️😍
#битрикс #orm #query
burlaka.studio
Урлы разделов и элементов через ORM
Технари под Битрикс. Создать, отредактировать, настроить, улучшить. Берём на себя всю грязную работу
Небольшой примерчик.
Получение кодов разделов по кодам товаров.
Использование дистинкт в квери.
Получение кодов разделов по кодам товаров.
Использование дистинкт в квери.
use Bitrix\Iblock\ElementTable;
use Bitrix\Main\ORM\Query\Query;
$query = new Query(ElementTable::getEntity());
$res = $query
->whereIn('ID', $productsIdList)
->setSelect(['IBLOCK_SECTION_ID'])
->setDistinct()
->exec();
#distinct #query #orm
Битриксоид из Колхоза
Похоже будет новая рубрика. Делаю разные пробы, чтобы понять, как может быть полезным чатГПТ. Запросил свг-код для крестика, чтобы в стили вверстать. Отлично сделал. К сожалению, в случае со стрелочкой влево (в том же простом стиле, как крестик) получилось…
Пишем запрос на D7
В коде гпт неточность: полей
В сущности через Query должны быть
В остальном всё хорошо (единственное, что я бы не делал
#нейронки #chatgpt #d7 #query
В коде гпт неточность: полей
DATE_ACTIVE_FROM
и DATE_ACTIVE_TO
в текущей сущности таблета с элементами нет — это поля из старого ядра и используются в CIBlockElement::GetList
— https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php. В сущности через Query должны быть
ACTIVE_FROM
и ACTIVE_TO
.В остальном всё хорошо (единственное, что я бы не делал
fetchAll
, а перебирал в цикле через fetch
). #нейронки #chatgpt #d7 #query