好的,我正在Laravel项目中进行搜索,我使用了WhereBetween
子句,但它不能正常工作。 让我展示代码,我会解释的。
这就是我的SearchController
搜索函数:
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
*/
public function automobilipretraga(Request $request)
{
$autoQuery = DB::table('automobils');
if (
$from = $request->input('from')
&& $to = $request->input('to')
) {
$autoQuery->whereBetween('price', [$from, $to]);
}
//vracanje rezultata
$automobili = $autoQuery->get();
return view('site.automobili.pretraga')->with('automobili', $automobili);
}
在我的search.blade.php
:
<div id="collapsecijena" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="cijena">
<div class="panel-body">
<div class="cs-model-year">
<div class="cs-select-filed">
<input type="text" name="from">
</div>
<span style="color:black;">TO</span>
<div class="cs-select-filed">
<input type="text" name="to">
</div>
</div>
</div>
</div>
所以我有这两个输入,分别名为from
和to
。
例如,我有三个汽车帖子,第一个有一个价格为15
,第二个有一个价格为45
,第三个有一个价格为80
。 当我搜索价格在20和50
之间时,它不起作用,它显示价格为15的汽车帖子,但当我将搜索更改为10和30
之间时,它起作用。 就像它只计算$to
变量,而不计算from
。 我做错了什么?
您尝试过将输入转换为整数吗
$from = (int)$from
$to = (int)$to
问题出在if else语句上
您可以在if语句上将变量定义为整数:
if($x = 8 && $y = 9){
echo $x; // output 8
}
但是不能在if语句下将变量定义为字符串,它会给出布尔结果,如下所示:
if($x = "10" && $y = "20"){
echo $x; // output 1
}
在这里,当您通过请求传递变量时,它给您的是string
,而不是integer
。