【发布时间】:2016-03-04 02:13:44
【问题描述】:
我有一个包含 SoftDelete 行为的基本模型类 (cornernote/yii2-softdelete)。删除记录后,表 deleted_at 中的列将填充时间戳。
尝试覆盖 base 模型中的 find() 方法,但 self::className() 不返回带有名称的表前缀。
return parent::find()->where([self::tableName() . '.deleted_at' => null]);
我必须将它添加到每个模型类中才能获得正确的(完整)表名。
问题:如何最好地忽略已填充列的表中的记录。该解决方案必须在 ActiveDataProvider([...])、find()->...one() 和 find()->...all() 情况下访问模型时起作用。
TIA
【问题讨论】:
-
你也可以使用
SoftDeleteQueryBehavior。 -
@soju 请详细说明/提供参考。
-
看看我的回答,关于
SoftDeleteQueryBehavior看看cornernote/yii2-softdeletedoc -
很奇怪,我的原始类中确实有 ActiveQuery 行为,但似乎不起作用。请在回复中更详细一点。感觉方向正确但不完整。
-
做出选择,我的回答会解决你原来的问题。关于 SoftDeleteQueryBehavior 仔细阅读文档并在需要时提出另一个问题...
标签: php activerecord yii2 soft-delete