我正在尝试在数据库的整行中搜索用户的搜索栏输入。我的代码返回一个空集:
$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();
如果您想查找任何字段包含搜索词的帖子,您应该使用
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();