使用laravel中的复选框按多个值搜索

问题描述

我有job_sector表,其中有sector_idjob_id字段。我只想按通过复选框选择的job_id搜索sectors一个可以选择多个扇区。

我的模特:

public function scopeSelectedOptions($query,$input = [])
{
    if(!empty($input)) {
        if(array_key_exists('sector_id',$input)) {
            $query->whereHas('sector_id',function($q) use ($input) {
                return $q->whereIn('sector_id',$input['sector_id']);
            });
        }
    }
    return $query;
}

控制器:

public function jobsFilter(Request $request)
{
    $jobs = JobSector::SelectedOptions(request()->all())->get();
    return view('front.pages.job.jobfilter')->with(['title'=>'Job Filter','jobs' => $jobs]);           
}

我从中选择多个部门的表格:

<form action="{{ route('job.jobfilter') }}" method="GET" class="mb-4">
  {{csrf_field()}}                      
    @foreach(get_sectors() as $k=>$s)                     
      <input type="checkBox" name="input[]" value="{{ $k }}">{{ $k }}<br>
    @endforeach
    <input type="submit" value="Search" />
</form>

查询显示输出

@foreach($jobs as $c)
    {{ $c->job_id }} <br>
  @endforeach

它向我显示了表中的所有job_id。

请帮助我,

解决方法

您将错误的数组分配给示波器

它看起来像这样:

['input' => ['12' => true]]

尝试

<form action="{{ route('job.jobfilter') }}" method="GET" class="mb-4">
  {{csrf_field()}}                      
    @foreach(get_sectors() as $k=>$s)                     
      <input type="checkbox" name="sector_id[{{ $k }}]">{{ $k }}<br>
    @endforeach
    <input type="submit" value="Search" />
</form>
public function jobsFilter(Request $request)
{
    $jobs = JobSector::whereIn('sector_id',array_keys(request()->sector_id))->get();
    return view('front.pages.job.jobfilter')->with(['title'=>'Job Filter','jobs' => $jobs]);           
}

(我只是忽略了您的作用域以提高可读性)