laravel mysql如何搜索一个字符串,看是否有值存在。

问题描述 投票:0回答:1

我使用mysql来存储一些项目.在mysql数据库中,每个项目都有一列名为'keywords'的字符串.数据看起来是这样的...react, nodejs, mysql, html。

我想搜索一个字符串(即php,react,mysql等),看看它是否包含在每行的'keywords'列中.我试过使用where和where in,但我不能让它工作.我可以让where工作,如果在keywords中只有一个值。

我的控制器中的一个例子

    public function php()
    {
        $projects = Projects::where('keywords','like',"php")->get();
        // dump($projects);
        return view('projects.php', ['projects' => $projects]);
    }

我如何使用whereIn的一个例子

    public function react()
    {
        $projects = Projects::whereIn('keywords','react')->get();
        return view('projects.react', ['projects' => $projects]);
    }

当我在使用where或whereIn时,有一个以上的关键字,我得到一个空数组。当我只用一个关键字来使用where时(就像我删除了字符串列中除了一个关键字之外的所有关键字一样),它可以完美地工作。

但我希望在每一列中都有多个关键字,因为每个项目都会在多个页面中使用。

再次感谢大家! Stack overflow是个炸弹!!!

php mysql laravel where-clause
1个回答
0
投票

1-列有多个关键字

如果你把所有的关键词放在一列中,你应该使用像%这样的

$projects = Projects::where('keywords','like',"%php%")->get();

如果您想一次搜索多个关键词。

$projects = Projects::where('keywords','like',"%php%")
->orWhere('keywords','like',"%react%")->get();

2-欄有一個關鍵字

如果您想在列中搜索一个关键字,您可以使用

$projects = Projects::where('keywords',"php")->get();

如果您想在列中搜索多个关键词,您可以使用

$projects = Projects::whereIn('keywords',['php','react'])->get();
© www.soinside.com 2019 - 2024. All rights reserved.