环境:laravel5.6 +php7.3.9
$levelMap = [];
array_push($levelMap, ['status', '=', 1]);
array_push($levelMap, ['monetary', '<', '800']);
$this->model->where($levelMap)->get();
以上查询sql,查询结构status字段的匹配是生效的,但monetary的字段的条件不生效
解决
最后发现是where 语句这个情况下string 类型的导致的问题
'800' 改为800就正常了,即string 类型改为int 或者float 类型 或者直接用whereRaw去代替where
$levelMap = [];
array_push($levelMap, ['status', '=', 1]);
array_push($levelMap, ['monetary', '<', 800]);
$this->model->where($levelMap)->get();