Поскольку TYPO3 использует доктрину, можно использовать таблицы из нескольких баз данных в одном экземпляре (с некоторыми ограничениями, такими как отсутствие joins
).
Но что вообще возможно?
На данный момент мне нужны две внешние таблицы для расширения, и вместо того, чтобы использовать их напрямую, я импортирую их для локальной работы, как обычно. Но импорт имеет некоторые недостатки.
Отказы, которые я могу принять:
- данные не актуальны (изменения во внешние таблицы импортируются позже)
- данные доступны только для чтения (в любом случае изменения выполняются извне)
Для импорта я использую ext:external_import
, но есть некоторые проблемы, так как не все данные могут быть импортированы в одном запускаю, а потом ошибки (например есть отчеты о дубликате ключей, увы во внешних таблицах нет дубликатов ключей)
С другой стороны, я сомневаюсь, что смогу использовать внешние таблицы напрямую, поскольку они не имеют обычной структуры TYPO3 (поля: 'uid', 'pid', 'tstamp', ...). (Может быть, их можно сопоставить в представлении?) (Конечно, в таблицах, которые я импортирую, данные в этих полях существуют)
Также внешние изменения могут остаться незамеченными, а кэшированное содержимое не отражает текущие данные. В моем случае это было бы незначительной проблемой, поскольку в настоящее время у нас уже нет «живых» данных, но их необходимо регулярно очищать для кеша и индекса поиска (solr).
Каковы возможные решения? ? (зависят ли они от версии TYPO3?) Каков ваш опыт?
РЕДАКТИРОВАТЬ:
При попытке реализовать это с учетом данных ответов появляется больше сомнений:
- таблицы доступны только для чтения (поскольку они изменяются извне):
Как мне объявить это в TYPO3? - таблицы не следуют обычным правилам именования, особенно одна таблица называется
sys_category
, что таким образом конфликтует с таблицей TYPO3sys_category
.
Могу ли я создать отображение внутри TYPO3? - Могу ли я создать представление из TYPO3 для переименования таблиц и полей?
например:
CREATE View tx_myext_category
SELECT id as uid, name as title, ...
FROM databasename.sys_category;