提问者:小点点

Laravel-Query,进行搜索


好的,我正在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>

所以我有这两个输入,分别名为fromto

例如,我有三个汽车帖子,第一个有一个价格为15,第二个有一个价格为45,第三个有一个价格为80。 当我搜索价格在20和50之间时,它不起作用,它显示价格为15的汽车帖子,但当我将搜索更改为10和30之间时,它起作用。 就像它只计算$to变量,而不计算from。 我做错了什么?


共2个答案

匿名用户

您尝试过将输入转换为整数吗

$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