Внедрение отношений в DBIx :: Class - PullRequest
3 голосов
/ 23 апреля 2010

У меня есть несколько объектов DBIx :: Class :: Core, которые моделируют различные таблицы базы данных.

Для некоторых из этих моделей (те, которые имеют столбец 'queue'), у меня есть другие подпрограммы ввода класса (в основном, для "перемещения" объекта модели вдоль его состояний очереди).

Я бы тоже хотел, чтобы этот класс внедрил has_many отношения аля

class($name)->has_many('queue_history','MySchema::Result::QueueHistory',
 { 'foreign.record_id'=>'self.id' },
 { where => { type => $name }} );

но, похоже, я не могу заставить отношения правильно регистрироваться (продолжайте появляться ошибки «Нет таких отношений» - однако, при вызове метода отношения в источниках возвращает связь).

Есть какие-нибудь подсказки относительно того, что не так?

1 Ответ

2 голосов
/ 24 апреля 2010

После некоторых копаний работает следующее:

$class = $schema->class($name)->has_many('queue_history','MySchema::Result::QueueHistory',
 { 'foreign.record_id'=>'self.id' },
 { where => { type => $name }} );

$schema->unregister_source($name);
$schema->register_class($name,$class);

Ключом являются методы отмены регистрации / регистрации, чтобы сгенерировать все соответствующие другие методы, которые добавляются при наличии нового отношения has_many.

...