Laravel 10 控制器搜索查询中的多个“Where”子句返回空集

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

我正在尝试在数据库的整行中搜索用户的搜索栏输入。我的代码返回一个空集:

   $posts = Post::where([
            ['title', 'LIKE', '%'.$search.'%'],
            ['description', 'LIKE', '%'.$search.'%'],
            ['intro', 'LIKE', '%'.$search.'%'],
            ['row_1_heading', 'LIKE', '%'.$search.'%'],
            ['row_1_body', 'LIKE', '%'.$search.'%'],
            ['row_2_heading', 'LIKE', '%'.$search.'%'],
            ['row_2_body', 'LIKE', '%'.$search.'%'],
            ['row_3_heading', 'LIKE', '%'.$search.'%'],
            ['row_3_body', 'LIKE', '%'.$search.'%'],
            ['row_4_heading', 'LIKE', '%'.$search.'%'],
            ['row_4_body', 'LIKE', '%'.$search.'%'],
            ['row_5_heading', 'LIKE', '%'.$search.'%'],
            ['row_5_body', 'LIKE', '%'.$search.'%'],
            ['conclusion', 'LIKE', '%'.$search.'%']
            ])->get();

这在我的 search.blade.php 中返回一个空格。正确的查询应该是什么样子?

我需要它说:

Search and return the user's input in the title, description, intro, row_1_heading, etc...

下面的查询有效,但仅适用于标题:

$posts = Post::where('title', 'LIKE', '%'.$search.'%')->get();
php sql mysql laravel database
1个回答
0
投票

如果您想查找任何字段包含搜索词的帖子,您应该使用

orWhere
而不是
where

$posts = Post::where('title', 'LIKE', '%'.$search.'%')
    ->orWhere('description', 'LIKE', '%'.$search.'%')
    ->orWhere('intro', 'LIKE', '%'.$search.'%')
    ->orWhere('row_1_heading', 'LIKE', '%'.$search.'%')
    ->orWhere('row_1_body', 'LIKE', '%'.$search.'%')
    ->orWhere('row_2_heading', 'LIKE', '%'.$search.'%')
    ->orWhere('row_2_body', 'LIKE', '%'.$search.'%')
    ->orWhere('row_3_heading', 'LIKE', '%'.$search.'%')
    ->orWhere('row_3_body', 'LIKE', '%'.$search.'%')
    ->orWhere('row_4_heading', 'LIKE', '%'.$search.'%')
    ->orWhere('row_4_body', 'LIKE', '%'.$search.'%')
    ->orWhere('row_5_heading', 'LIKE', '%'.$search.'%')
    ->orWhere('row_5_body', 'LIKE', '%'.$search.'%')
    ->orWhere('conclusion', 'LIKE', '%'.$search.'%')
    ->get();
© www.soinside.com 2019 - 2024. All rights reserved.