2016-03-04 80 views
1

我有一个包含SoftDelete行为(cornernote/yii2-softdelete)的基本模型类。当记录被删除时,表格deleted_at中的列填充了时间戳。Yii2,Softdelete,self :: tableName(),并忽略`deleted`记录

试图覆盖base模型中的find()方法,但self :: className()不返回带有名称的表前缀。

return parent::find()->where([self::tableName() . '.deleted_at' => null]); 

我必须将它添加到每个模型类才能得到正确的(完整的)表名。

问:如何最好地忽略填充了列的表中的记录。当访问ActiveDataProvider([...]),find() - > ... one()和find() - > ... all()情况时,解决方案必须工作。

TIA

+0

你也可以使用'SoftDeleteQueryBehavior'。 – soju

+0

@soju请详细说明/提供参考。 –

+0

看看我的回答,关于'SoftDeleteQueryBehavior'看看'cornernote/yii2-softdelete'文档 – soju

回答

0

我认为你应该使用Customized Query Class

它已经存在于库中,你使用的是什么 - here github

如果你想 - 你也可以重新定义find方法。

+0

的确,我试图重写基本模型find(),但我必须有类表名称。 tableName()不会返回表前缀,因此找不到表。 –

+0

@Pheagey你为什么需要表名?你能分享你的模型代码吗? –