如何使搜索系统在 laravel 中工作,它可以 运行 通过在数据库中存储为字符串的数组?

How to make search system work in laravel which can run through an array stored as string in database?

我想制作一个搜索框,用于 运行 搜索查询。我已将我的数据以这种形式存储在数据库 table 中

asdf,english class science 5,chapter 1

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

我需要搜索一下。因此,如果用户键入 chapter1,搜索查询应该能够在该行中找到 chapter1。目前搜索查询无法选择任何东西。我的代码如下:

 $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