2016-03-04 84 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你爲什麼需要表名?你能分享你的模型代碼嗎? –