如何在yii2中重置默认范围

时间:2018-04-13 05:04:44

标签: php yii2

我在我的项目中使用默认范围,它工作正常。

public static function find()
{
    return parent::find()->where(['is_deleted' => 0]);
} 

但是现在,我想在报告部分显示所有已删除的记录。

如何仅跳过特定查询的默认范围?

3 个答案:

答案 0 :(得分:0)

使用它来清除或重新定义您的状况:

$model = Model::find()->where('');

答案 1 :(得分:0)

如果您想确保使用新查询(没有任何参数或条件),则需要为给定模型创建新的ActiveQuery对象。

$query = Yii::createObject(ActiveQuery::className(), [Post::class]);

或者在模型中添加辅助方法:

public static function freshFind()
{
    return parent::find();
} 

并使用它代替Post::find()

答案 2 :(得分:0)

你可以避免使用find()..使用findBySql

$sql = 'SELECT * FROM product';
$product= Product::findBySql($sql,)->all();
用这种方式你所有的产品型号..

你也可以使用

$sql = 'SELECT * FROM ' . Product::tableName() ;

用于避免产品的explici表名称