DBIx :: Класс виртуальной колонки? - PullRequest
2 голосов
/ 05 марта 2011

Я создаю приложение с помощью ORM на основе DBIx :: Class (Loader).Большинство моих моделей баз данных имеют столбец «имя».Один из моих контроллеров ищет все классы схемы, используя в первую очередь столбец «имя».Однако пара классов схемы не имеет столбца «name».

Возможно ли в DBIx :: Class добавить своего рода «виртуальный» столбец, который вместо этого использует другой столбец:

$resultset('Account')->search({name => 'foobar'})

тайно переписывает на

$resultset('Account')->search({accountnumber => 'foobar'})

Надеюсь, у меня есть смысл, кто-нибудь?

Спасибо, Роб

1 Ответ

1 голос
/ 07 марта 2011

Насколько я знаю, это невозможно - в любом случае, это не ключ к поисковому запросу.Что вы можете сделать, это создать базовый класс для всех ваших классов наборов результатов (вы используете load_namespaces , верно?), Который имеет метод find_by_name или аналогичный, который выполняет этот поиск в правильном столбце.По умолчанию для столбца может быть указано name , но он может быть переопределен атрибутом класса, который можно настроить с помощью mk_accessor .

.класс набора результатов по умолчанию для всех ваших наборов результатов с атрибутом default_resultset_class load_namespaces

...