Установите предложение WHERE по умолчанию для отношений DBIC

У нас есть большая база данных с несколькими таблицами, содержащими поле delete_time, Строки с ненулевым значением в этом поле должны быть исключены из большинства "обычных" запросов. Так, например, у нас есть объект "Org", который has_many "Пользовательские" объекты. Но в большинстве случаев $org->users не должен включать объекты "Пользователь" с ненулевым delete_time поле.

Теперь мы могли бы определить has_many отношения, чтобы исключить их, но это означает, что мы должны настроить ...->has_many('users' => '::User', ...) везде. Было бы более естественно и менее подвержено ошибкам, если ::User класс может применить "предложение WHERE по умолчанию", которое будет указывать delete_time IS NULL, если и только если delete_time не указывается в явном предложении WHERE. (Или, может быть, если в has_many список параметров; Я не очень привереда.)

Я думал, что это может быть настроено как черта или плагин в ::User учебный класс. Возможно ли это дистанционно? Я ищу ободрение и направление, а не обязательно конкретное решение.

0 ответов

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