【发布时间】:2022-01-14 18:58:01
【问题描述】:
我到处尝试,但找不到任何解决方案:(,例如,我想使用类别复选框搜索帖子,如果用户检查摄影和绘画类别,它只显示具有 $category_slug=photography 的帖子或$category_slug=drawing 但它仅在我检查一个类别类型时才有效,如果我选择多个类别类型,它不会返回任何内容。请帮助
刀片
@if (isset($categories))
@foreach ($categories as $category)
<div class="list-group-item checkbox">
<label>
<input type="checkbox" class="common_selector category" name="cate[]" value="{{ $category->slug }}">
{{$category->name }}
</label>
</div>
@endforeach
@endif
控制器
public function search(Request $request)
{
$categories = Category::all();
$txtSearch = $request->input('q');
if (isset($txtSearch)) {
$query = Post::where('title', 'LIKE', "%$txtSearch%")->orderBy('id', 'DESC');
} else {
$query = Post::orderBy('id', 'DESC');
if ($request->has('cate')) {
$categoryType = $request->input('cate');
foreach ($categoryType as $category) {
$query->where('category_slug', $category);
}
}
}
$queryResults = $query->paginate(20);
return view('searchPage, ['categories' => $categories, 'queryResults' => $queryResults]);
}
感谢您的帮助。
【问题讨论】:
-
为什么没有数据透视表来链接
posts和categories?似乎你在posts上有一个category_slug字段,那怎么会有多个值? (您的设置怎么可能有多个类别?) -
@lagbox category_slug 是 Posts 表的 FK 列,它引用 categories 中的 slug 列 表。我认为它不需要数据透视表,因为我只有 6 个类别。此外,帖子只有一种类别类型。
-
该列只能保存 1 个值,那么一个帖子怎么可能有多个类别呢? “如果用户检查摄影和绘画类别,它只显示具有两个类别的帖子” ...帖子怎么可能同时拥有这两个类别?
-
我知道一个帖子只有一个类别类型,但我想展示这样的内容
select * from posts where category_slug = photography or category_slug = drawing -
这两者都不是......这是一个或另一个......
whereIn怎么样,你可以传递一个类别数组