php - 如何使搜索系统在 laravel 中工作,它可以通过存储在数据库中的字符串数组运行?
问题描述
我希望制作一个搜索框来运行搜索查询。我以这种形式将我的数据存储在数据库表中
asdf,英语课科学 5,第 1 章
我希望使用,来分隔不同的标签。
我需要搜索这个。因此,如果用户键入第 1 章,则搜索查询应该能够在行中找到第 1 章。目前,搜索查询无法选择任何内容。我的代码如下:
$tag = $request->search;
$query = Comics::where('comics_tag','LIKE','%'.$tag.'%')
->get();
var_dump($query);die();
如何解决?
解决方案
我建议不要将标签存储为字符串,而应在漫画和标签之间创建多对多关系,之后您将能够轻松管理它们:
https://laravel.com/docs/8.x/eloquent-relationships#many-to-many
然后,一旦您tags()
与漫画建立了关系:
$comics = Comics::whereHas('tags', function($query){
$query->where('name', 'like', "%" . request()->search . "%");
})->get();
至于命名约定,你的模型应该是单数的,所以它应该是:
Comic::class
并不是Comics::class
推荐阅读
- java - “TypeError:form.set 不是函数”Java 无法访问 FormData 的函数
- javascript - Firebase 实时数据库 - foreach - 预计将在箭头函数结束时收到一个值
- r - 从 R 中的先前数据创建模拟数据
- javascript - 在 contentediatable div 中的子字符串末尾设置光标
- c# - 如何将 ImagePath 存储在 Mysql 数据库中?
- mysql - 尝试使用参数创建简单过程时出错 - 需要标识符
- javascript - 如何映射`.find()`返回的数据?
- javascript - 尝试将页脚中的每个按钮设置为白色
- python - 为什么 Jupyter notebook 在 matplotlib xlabel() 之后会打印文本?
- python-3.x - 如何导入无法从 pip/conda 存储库安装的 Python 包(Pytorch-neat)?