Внешний ключ построителя расширений TYPO3

Почему TYPO3 Extension Builder не генерирует внешние ключи?

Я установил некоторые отношения между моделями, но в коде SQL нет только столбцов FK для значения ключа.

Кто-нибудь может мне помочь?


person Felix    schedule 22.12.2014    source источник


Ответы (1)


Цитата из Карцена Дамбекалнса

Это полусознательное дизайнерское решение. Просто найдите дату, когда ограничения внешнего ключа были введены в MySQL, и сравните с датой, когда TYPO3 «родился».

Конечно, было бы здорово добавить такие ссылки, тем более, что MySQL всегда может их обработать, даже если базовый механизм хранения их не обрабатывает (в этом случае они будут просто проигнорированы).

(источник)

До сих пор ничего не изменилось, поэтому вам нужно создать внешние ключи самостоятельно после моделирования.

Ответ на комментарий:

как вы справились с отношениями между двумя таблицами? например, у меня есть таблица people, которая относится к таблице house со столбцом housenr

Конечно, это зависит от типа отношения (1:n, n:1, m:n и т. д.), и Builder отлично поддерживает создание отношений в инструменте моделирования. Имейте в виду, что внешние ключи НЕ требуются для сохранения отношений в TYPO3.

Некоторые правила описаны в разделе документации TCA, т.е. в указанном случае вы можете использовать select или тип group (with internal_type) поля. Для отношения «многие ко многим» вам также необходимо создать таблицу MM. Если вы будете следовать этим документам, вы можете быть уверены, что в обычной форме редактирования бэкенда они будут обработаны должным образом.

Как упоминалось ранее, Extension Builder поддерживает создание различных типов отношений в своем инструменте моделирования щелчок-щелчок, и стоит потратить некоторое время, чтобы поиграть с ним, чтобы увидеть, как отношения разных типов обрабатываются в TYPO3. Он использует те же правила, что и при создании отношений в расширениях pre-extbase. Более того, Builder добавляет в модели необходимые методы, т.е. для getting, attaching и detaching объектов ММ данного поля отношения, поэтому очень важно смоделировать все ваши отношения в начале. В другом случае вам нужно будет написать эти методы вручную (что скучно)

person biesior    schedule 22.12.2014
comment
спасибо, хорошо, тогда я сделаю это вручную, могу ли я сделать это в ext_tables.sql, хорошо? - person Felix; 22.12.2014
comment
TBH Я никогда не добавлял внешние ключи в TYPO3, так что не хочу об этом говорить. Я надеюсь, что вы поделитесь своим опытом, когда вы это сделаете. - person biesior; 22.12.2014
comment
как вы справлялись с отношениями между таблицами? например, у меня есть таблица людей, которая относится к таблице house со столбцом housenr, а позже я хочу отобразить все дома с их связанными людьми? - person Felix; 22.12.2014
comment
Еще раз спасибо :) Попробую. Хотя бы один вопрос. Знаете ли вы, как можно установить связь с пользователями typo3 FE? - person Felix; 22.12.2014
comment
Обычный fe_user из TYPO3 или ваша модель, расширяющая fe_user? (Кстати, TYPO3 всегда пишется заглавными буквами ;)) - person biesior; 22.12.2014
comment
хорошо, постараюсь писать в верхнем регистре ;) Моя модель людей должна относиться к простому TYPO3 fe_user. Большое спасибо! - person Felix; 22.12.2014
comment
Знаете что: создайте новый вопрос и опишите там, в чем дело, особенно если вы хотите: A) соединиться с fe_user как отношение (т.е. People.emploer = fe_user с uid 123) или B ) Model People расширяет таблицу fe_user, поскольку вы хотите использовать этот тип записи, но вам нужны дополнительные поля в ней. Просто ответ зависит от цели, есть два разных подхода - person biesior; 22.12.2014
comment
У меня уже есть вопрос по этой проблеме: stackoverflow.com/questions/27601254/ собирается отредактировать его с дополнительной информацией. - person Felix; 22.12.2014