首页 > 解决方案 > 如何使搜索系统在 laravel 中工作,它可以通过存储在数据库中的字符串数组运行?

问题描述

我希望制作一个搜索框来运行搜索查询。我以这种形式将我的数据存储在数据库表中

asdf,英语课科学 5,第 1 章

我希望使用,来分隔不同的标签。

我需要搜索这个。因此,如果用户键入第 1 章,则搜索查询应该能够在行中找到第 1 章。目前,搜索查询无法选择任何内容。我的代码如下:

 $tag = $request->search;
    $query = Comics::where('comics_tag','LIKE','%'.$tag.'%')
    ->get();
    var_dump($query);die();

如何解决?

标签: phplaravellaravel-5laravel-5.8

解决方案


我建议不要将标签存储为字符串,而应在漫画和标签之间创建多对多关系,之后您将能够轻松管理它们:

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


推荐阅读