[top-think/think]关闭全局查询后,软删除失效问题

2023-12-15 746 views
5

我关闭全局查询,只是想关闭我在模型里定义的base的全局条件,并没有想关闭软删除查询条件。 看了下源码是把软删除划分到了是否调用全局查询范围里,控制base的查询条件和软删除查询条件的状态能不能分开?

回答

6

5.0额外提供了useSoftDelete方法便于独立操作 5.1的软删除已经和base分开了

1

@liu21st ThinkPHP V5.1.0RC3 Model 源码第241行

        if ($useBaseQuery) {
            // 软删除
            if (method_exists($this, 'getDeleteTimeField')) {
                $field = $this->getDeleteTimeField(true);
                $query->useSoftDelete($field);
            }

            // 全局作用域
            if (method_exists($this, 'base')) {
                call_user_func_array([$this, 'base'], [ & $query]);
            }
        }

你确定已经分开了?

8

理解错你的意思了,5.1的软删除定义不会受base定义的影响 但全局查询范围依然是和软删除一起关闭,因为内置的方法调用需要,比较保险的方法是你独立调用 useSoftDelete方法