You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2如何重置默认作用域?特定查询如何跳过默认作用域?

解决方法:跳过默认作用域查询所有记录

在报表模块需要查询已删除记录时,只需在查询链里调用unscoped()方法就能跳过默认作用域,这样就能获取包括已删除(is_deleted = 1)在内的所有记录啦。

给你两个实用的写法:

  1. 完全跳过所有默认作用域,查询全量记录
// 报表模块中获取所有数据(包含已删除的)
$allRecords = YourModel::find()->unscoped()->all();
  1. 仅覆盖is_deleted条件,保留其他默认作用域(如果有的话)
    如果你的模型默认作用域还有其他过滤规则,不想全部跳过,直接重新设置where条件更精准:
// 只获取已删除的记录,不影响其他默认作用域
$deletedRecords = YourModel::find()->where(['is_deleted' => 1])->all();

简单说下逻辑:

  • unscoped()会清除所有默认作用域,让你执行一个不受原有过滤限制的“纯净”查询;
  • 要是只想调整is_deleted这一个条件,直接覆盖where会更稳妥,不会打乱其他默认的查询规则。

内容的提问来源于stack exchange,提问作者Paritosh Mahale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:23:22