Yii 2 可以从模型重写 WHERE 条件吗?

Yii 2 can rewrite WHERE condition from model?

我的模型中有一些 where 条件。 它的检查是否有效。

现在我需要写一个连接关系。但我需要删除 where 条件。可能吗?

我的模型。

  ...
  public static function find() {
     return (new AssetgroupsQuery(get_called_class()))->active();
  }

我的亲戚

public function getAssetgroup(): \app\models\AssetgroupsQuery {
    return $this->hasOne(Assetgroups::class, ['asg_id' => 'ass_group'])->andOnCondition(['asg_active' => '1'])
        ->viaTable('assets', ['ass_id' => 'log_ass_id',]);
}

我需要获取所有活动资产并加入,如果资产为空我需要获取空字段,但是 模型条件添加到我当前的 sql 查询并删除所有资产为空的字段。 我尝试添加一些 where 条件来删除旧的 where,但它不起作用。

你能帮帮我吗?

您可以使用 where(null) 重置现有条件。

在关系层面上:

public function getAssetgroup(): \app\models\AssetgroupsQuery {
    return $this->hasOne(Assetgroups::class, ['asg_id' => 'ass_group'])
        ->andOnCondition(['asg_active' => '1'])
        ->where(null)
        ->viaTable('assets', ['ass_id' => 'log_ass_id',]);
}

或直接加入:

$query = MyModel::find()
    ->joinWith([
        'assetgroup' => function (ActiveQuery $query) {
            $query->where(null);
        },
    ])