环境: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();

本文探讨了在Laravel框架中使用PHP7.3.9环境下,针对特定查询条件的优化问题。具体分析了在where语句中,由于数据类型不匹配导致的部分查询条件无法生效的情况,并提供了将字符串类型转换为整型或浮点型的解决方案。
1562

被折叠的 条评论
为什么被折叠?



