top-think / think-orm

Think ORM——the PHP Database&ORM Framework
Apache License 2.0
413 stars 171 forks source link

withSearch搜索器,在查询条件字段值为0时,withSearch方法中直接过滤掉了条件,导致查询结果异常。 #618

Closed rockyhu closed 2 weeks ago

rockyhu commented 3 weeks ago

withSearch搜索器,在查询条件字段status值为0时,withSearch方法中直接过滤掉了条件,导致查询结果异常。

image image

` /**

以上代码在if ($strict && (!isset($data[$field]) || empty($data[$field]))) 判断是满足empty($data[$field])条件($data['status']=0),导致直接continue了。这应该是一个Bug,期望能够修复。

FlameMida commented 3 weeks ago

离谱,参数类型都变了居然没写breaking

liu21st commented 3 weeks ago

withsearch方法的第三个参数传入false试下

rockyhu commented 3 weeks ago

withsearch方法的第三个参数传入false试下

通过这个可以临时解决问题,这个问题在开发环境最新的版本下存在的。我线上版本要低一些,不存在这个问题。

rockyhu commented 3 weeks ago

离谱,参数类型都变了居然没写breaking

没看明白,您指的哪个参数类型变了?

liu21st commented 3 weeks ago

搜索器功能有调整 当表单没有数据或者为空的时候默认不会执行 所以当数据为0的时候没有执行 这个后面可以优化改进下

rockyhu commented 3 weeks ago

搜索器功能有调整 当表单没有数据或者为空的时候默认不会执行 所以当数据为0的时候没有执行 这个后面可以优化改进下

点赞

FlameMida commented 2 weeks ago

离谱,参数类型都变了居然没写breaking

没看明白,您指的哪个参数类型变了?

public function withSearch($fields, $data = [], string $prefix = '') 旧版本的签名是这样的,第三个参数变了

rockyhu commented 2 weeks ago

离谱,参数类型都变了居然没写breaking

没看明白,您指的哪个参数类型变了?

public function withSearch($fields, $data = [], string $prefix = '') 旧版本的签名是这样的,第三个参数变了

明白了。

liu21st commented 2 weeks ago

离谱,参数类型都变了居然没写breaking

没看明白,您指的哪个参数类型变了?

public function withSearch($fields, $data = [], string $prefix = '') 旧版本的签名是这样的,第三个参数变了

prefix参数基本上没有什么用 手册也没有提及