为DBIC关系设置默认的WHERE子句

时间:2018-12-04 14:19:43

标签: dbix-class

我们有一个相当大的数据库,其中包含许多包含字段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类中将其设置为特征或插件。这可能吗?我正在寻找鼓励和方向,不一定是完善的解决方案。

0 个答案:

没有答案