Laravel搜索表单:使用<=运算符失效,like可正常工作的问题
解决Laravel中<=运算符搜索失效的问题
嘿,我来帮你搞定这个搜索表单的问题!你遇到的核心问题是把用于模糊匹配的%通配符错误用在了数值比较运算符<=上,这直接导致查询逻辑出错了。
问题原因拆解
LIKE是字符串模糊匹配运算符,需要%来表示“任意长度的字符”,比如WHERE adultes LIKE '%3%'会匹配所有包含3的adultes值;- 但
<=是数值比较运算符,它是用来直接比较字段值和给定数值大小的,不需要加任何通配符。你加了%之后,Laravel会把%$adultes%当成字符串来处理,数据库会尝试把字段值和这个带%的字符串做比较,自然得不到你想要的结果。
修正后的代码
首先记得把你注释掉的获取参数的代码打开,然后去掉<=两边的%:
public function search(Request $request) { $adultes = $request->get('adultes'); // 打开这行,正确获取前端传过来的参数 $dispos = Disponible::where('adultes', '<=', $adultes) ->paginate(5); return view('rooms_dispo',['dispos'=>$dispos]); }
额外优化建议
如果你的adultes字段存储的是数字(比如可容纳的成人数量),建议把获取到的参数转换成整数,避免因为前端传字符串导致的类型匹配问题:
$adultes = (int)$request->get('adultes');
这样调整后,你的<=比较逻辑就能正常工作啦,以后区分开模糊匹配和数值比较的用法就不会再踩这个坑了~
内容的提问来源于stack exchange,提问作者katty
相关产品推荐
相关产品推荐

