我们有一个相当大的数据库,其中包含许多包含字段delete_time
的表。在大多数“常规”查询中,应排除此字段中具有非空的行。因此,例如,我们有一个“组织”对象,其中has_many
个“用户”对象。但是在大多数情况下,$org->users
不应包含带有非空delete_time
字段的“用户”对象。
现在,我们可以定义has_many
关系来排除这些关系,但这意味着我们必须在各处调整...->has_many('users' => '::User', ...)
。如果::User
类可以且仅当在显式中未指定delete_time IS NULL
时,可以应用将指定delete_time
的“默认WHERE子句”,这将更加自然,并且更不易出错WHERE子句。 (或者,也许在has_many
参数列表中没有明确的WHERE子句;我不是很挑剔。)
我当时认为可以在::User
类中将其设置为特征或插件。这可能吗?我正在寻找鼓励和方向,不一定是完善的解决方案。