DBIx :: Class :: Schema :: Настройка загрузчика - PullRequest
0 голосов
/ 03 июля 2018

У нас есть база данных MyISAM (не спрашивайте меня, почему мы не переключаемся на InnoDB, она не контролируется мной).

Теперь я хочу DBIx::Class::Schema::Loader создать отношения для столбцов *ID, добавив s для получения имен таблиц. Например, Order.SeanceID должен связывать таблицу Order с таблицей Seances.

Можно ли взломать DBIx::Class::Schema::Loader, чтобы сделать это? Или лучше написать мой собственный загрузчик?

1 Ответ

0 голосов
/ 09 июля 2018

Не беспокойтесь о «взломе» DBIx :: Class :: Schema :: Loader, чтобы справиться с этим. Просто создайте классы, а затем добавьте отношения вручную.

Каждый класс, который вы генерируете с помощью DBIx :: Class :: Schema :: Loader, будет содержать внизу текст, который выглядит следующим образом:

# Created by DBIx::Class::Schema::Loader v0.07043 @ 2018-07-09 09:56:55
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:6//4n3Crnz9U/q6GZ0Fwtg

# You can replace this text with custom code or comments, and it will be preserved on regeneration

Как говорится в последнем комментарии, все, что вы вставите в файл под этим текстом, будет сохранено, если вы обновите класс. Таким образом, вы можете безопасно добавить информацию об отношениях в этот раздел файла вручную и знать, что она все еще будет там в следующий раз, когда вы обновите класс.

Не забывайте, что вам нужно добавить обе стороны отношения - например, отношение has_many в родительской таблице и взаимное отношение belongs_to в связанной дочерней таблице.

...