我有一个包含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
答案 0 :(得分:1)
您应该阅读延迟静态绑定:
http://php.net/manual/en/language.oop5.late-static-bindings.php
后期静态绑定引入了
static
关键字,该关键字引用了最初在运行时调用的类
因此,您应该只使用 static::tableName()
而不是self::tableName()
。
答案 1 :(得分:0)