DBIx:: Класс виртуальной колонки?

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

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

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

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

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

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

Спасибо, Роб

1 ответ

Решение

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

Вы можете установить этот базовый класс как класс набора результатов по умолчанию для всех ваших наборов результатов с помощью default_resultset_class атрибут load_namespaces

Другие вопросы по тегам