You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel搜索功能异常:无论查询内容如何均无结果求助

Laravel文章搜索无结果问题修复

问题根源

你的代码逻辑存在明显错误:尽管在判断搜索参数后正确赋值了$posts变量,但最后返回视图时,你又重新执行了Post::paginate(2),直接覆盖了之前处理好的搜索结果或默认分页数据。这导致无论用户输入什么搜索内容,页面始终显示默认的2篇文章,完全没用到你之前筛选的$posts。

修复步骤

1. 修正控制器的返回逻辑

把return语句中->with('posts', Post::paginate(2))替换为->with('posts', $posts),确保传递的是根据搜索条件处理好的文章数据:

class WelcomeController extends Controller
{
    public function index(){
        $search = request()->query('search');

        if ($search){
            $posts = Post::where('title', 'LIKE', "%{$search}%")->paginate(1);
        } else {
            $posts = Post::paginate(2);
        }
        
        return view('welcome')
            ->with('categories', Category::all())
            ->with('tags', Tag::all())
            ->with('posts', $posts); // 改为传递处理好的$posts变量
    }
}

2. 优化搜索安全性(可选)

为避免SQL注入风险,推荐使用参数绑定写法:

// 写法1:使用DB::raw绑定参数
$posts = Post::where('title', 'LIKE', DB::raw('?'), ["%{$search}%"])->paginate(1);

// 写法2:Laravel简洁参数绑定
$posts = Post::where('title', 'like', "%{$search}%")->paginate(1);

3. 验证视图数据接收

确保blade视图中通过$posts变量遍历展示文章:

@foreach($posts as $post)
    <!-- 文章内容展示代码 -->
@endforeach

<!-- 分页链接渲染 -->
{{ $posts->links() }}

内容的提问来源于stack exchange,提问作者peter mushemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:01:09