laravel - 使用 laravel 中的复选框按多个值搜索
问题描述
我有job_sector
表格sector_id
和job_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]);
}
(我只是忽略你的范围更易读)
推荐阅读
- php - 检索新的数据库记录
- reactjs - 获取发送空的帖子参数 - 反应原生
- c# - 使用图像路径显示图像不起作用
- django - django inlineformset 中的动态额外字段
- d3.js - d3v4 扭曲饼图转换
- javascript - NodeJS 从 DB 1 中检索记录 1 与全部
- python-3.x - 将字典列表的字符串表示形式转换为字典列表
- angular - Angular 通过输入中的 id 从数组中获取对象
- android - Android 模拟器没有与我的 React Native 应用程序一起运行
- postgresql - Odoo 12 数据库连接超时与繁重的 cron 作业