doumianfeng6979 2019-07-19 07:02
浏览 85
已采纳

在Laravel中显示搜索表单结果的问题

I building an application for ads/properties in Laravel. I have a search form with filters that are checkboxes. I am having a problem when I select two options from the same request for example supply, demand that are PropertyBidAsk I get only results from demand and not both, also I would like to keep both checked after form submission. Supply and demand are values in the category column in the categories table. Any help is appreciated. Here is my code.

CategoryController.php:

public function search(Request $request, Property $property)
{
    $category = $property->category;

    $query = Property::query();

    if ($request->has('propertyBidAsk')) {
        $request->get('propertyBidAsk');
    }

    if ($request->propertyBidAsK == 'supply' && $request->propertyBidAsk== 'demand') {
        $query->whereHas('category', function ($query) use ($request) {
            $query->where('category', 'like', '%' . $request->propertyBidAsk . '%');
        });
    } elseif ($request->propertyBidAsk == 'supply') {
        $query->whereHas('category', function ($query) use ($request) {
            $query->where('category', 'like', '%' . 'supply' . '%');
        });
    } else if ($request->propertyBidAsk == 'demand') {
        $query->whereHas('category', function ($query) use ($request) {
            $query->where('category', 'like', '%' . 'demand' . '%');
        });
    }

    $results = $query->paginate(6);

    return view('search', compact('category', 'results', 'request'));
}

search.blade.php:

<div class="col-md-2 mb-6">
    <h5>Payment Method</h4>
    <div class="d-block my-3">
        <div class="custom-control custom-checkbox">
            <input id="supply" name="propertyBidAsk" value="supply" type="checkbox" class="custom-control-input" @if(old('propertyBidAsk', $request->propertyBidAsk ?? 'default') === 'supply') checked @endif>
            <label class="custom-control-label" for="supply">supply</label>
        </div>
        <div class="custom-control custom-checkbox">
            <input id="demand" name="propertyBidAsk" value="demand" type="checkbox" class="custom-control-input" @if(old('propertyBidAsk', $request->propertyBidAsk ?? 'default') === 'demand') checked @endif>
            <label class="custom-control-label" for="demand">demand</label>
        </div>
    </div>
</div>
  • 写回答

2条回答 默认 最新

  • douchui7332 2019-07-19 07:15
    关注

    To get the multi select output with same name attr, update name of your checkbox input to propertyBidAsk[] as array. You will get input array.

    <input id="supply" name="propertyBidAsk[]" value="supply" type="checkbox" class="custom-control-input" @if(old('propertyBidAsk', $request->propertyBidAsk ?? 'default') === 'supply') checked @endif>
    
    
    <input id="demand" name="propertyBidAsk[]" value="demand" type="checkbox" class="custom-control-input" @if(old('propertyBidAsk', $request->propertyBidAsk ?? 'default') === 'demand') checked @endif>
    

    In controller will get the value by.

    public function search(Request $request, Property $property)
    {
        $category = $property->category;
    
        $query = Property::query();
    
        if ($request->has('propertyBidAsk')) {
            $request->get('propertyBidAsk');
        }
    
    
        $propertyBidAsk = $request->input('propertyBidAsk'); //$propertyBidAsk will get in array
    
        if (in_array('supply', $propertyBidAsk)  && in_array('demand', $propertyBidAsk)){
            $query->whereHas('category', function ($query) use ($request) {
                $query->where('category', 'like', '%demand%')->orWhere('category', 'like', '%supply%')
            });
        } else if(in_array('supply', $propertyBidAsk)){
            $query->whereHas('category', function ($query) use ($request) {
                $query->where('category', 'like', '%' . 'supply' . '%');
            });
        } else  if(in_array('demand', $propertyBidAsk)){
            $query->whereHas('category', function ($query) use ($request) {
                $query->where('category', 'like', '%' . 'demand' . '%');
            });
        }
    
        $results = $query->paginate(6);
    
        return view('search', compact('category', 'results', 'request'));
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器