Я довольно новичок в Tridion, и мне нужно реализовать функциональность, которая позволит редактору содержимого создавать компонент и назначать ему несколько диапазонов дат (доступных дат). Они должны быть запрошены у брокера для обеспечения функциональности поиска.Встроенный формат хранения метаданных Tridion 2009 у брокера
Первоначально это требовало только одной даты начала и окончания и поэтому реализованы как отдельные поля метаданных.
Я предлагаю использовать встроенную схему в поле метаданных «доступные даты» схемы, чтобы можно было назначить несколько дат начала и окончания.
Однако, поскольку поле теперь допускает несколько значений, данные хранятся в брокере как значения, разделенные запятыми, в столбце «KEY_STRING_VALUE», а не как значение даты в столбце «KEY_DATE_VALUE», как это было, когда оно было допускается только одно начальное и конечное значения.
например.
KEY_NAME | KEY_STRING_VALUE
end_date | 2012-04-30T13: 41: 00, 2012-06-30T13: 41: 00
start_date | 2012-04-21T13: 41: 00, 2012-06-01T13: 41: 00
Это вызывает проблемы с моим брокером, поскольку я больше не могу использовать простую логику запроса для извлечения элементов, которые мне нужны для поиска на основе дат.
Прежде чем я начну писать логику C# для анализа этих дат и поиска по запятой, основанных на этих данных, мне было интересно, были ли у кого-то аналогичные требования/опыт в прошлом и внедрили это другим способом, чтобы уменьшить количество необходимо выполнить синтаксический анализ кода и использовать запрос брокера для завершения поиска.
Я развиваю это на TRIDION 2009 года, но с использованием 5.3 Брокера (для устаревших причин), поэтому запрос в настоящее время выглядит следующим образом (для отдельных дат начала/конца):
query.SetCustomMetaQuery((KEY_NAME='end_date' AND KEY_DATE_VALUE>'" + startDateStr + "') AND (ITEM_ID IN(SELECT ITEM_ID FROM CUSTOM_META WHERE KEY_NAME='start_date' AND KEY_DATE_VALUE<'" + endDateStr + "')))";
Любой помощь очень оценили.
Я никогда не использовал брокер 5.3, не позволяет ли это слово «IN»? –
Да, в запросе, который я добавил выше, используются примеры используемого ключевого слова 'IN', которое отлично подходит для одиночных значений, но несколько значений больше не сохраняются как даты, а строка дат запятой (в виде строкового значения), что означает, что я больше не могу запрашивать данные на основе даты, как ранее. –
Так что, извините, я этого не заметил, и это все равно не поможет, извините! –