Установите предложение 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
учебный класс. Возможно ли это дистанционно? Я ищу ободрение и направление, а не обязательно конкретное решение.