【问题标题】:how to hide results from database until the seacrh is complete in Laravel?如何在 Laravel 中搜索完成之前隐藏数据库中的结果?
【发布时间】:2022-04-28 14:41:45
【问题描述】:

我正在搜索该网站,以便用户可以从数据库中搜索结果

一切正常,但在用户完成搜索之前如何隐藏结果?

这是控制器:

class SearchController extends Controller
{
public function search(Request $request){
    // Get the search value from the request
    $search = $request->input('search');
    

    // Search in the title and body columns from the posts table
    $classes = Classes::query()
        ->where('course_name', 'LIKE', "%{$search}%")
        ->orWhere('course_lecturer', 'LIKE', "%{$search}%")
        ->get();


    // Return the search view with the results compacted
    return view('search', compact('classes'));
}
}

这是视图:

<div class="container">
<h1>Search</h1>
<form action="{{ route('search') }}" method="GET">
    <input style="font-family: Frutiger" dir="rtl" type="text" placeholder="search" name="search" required/>
    <button style="font-family: Frutiger" class="col-md-12 btn btn-primary" type="submit">Search</button>
</form>  
</div>
@if($classes->isNotEmpty())
@foreach ($classes as $classes)
    <div class="post-list text-center">
        <p>{{ $classes->course_name }}</p>
        <p>{{ $classes->course_lecturer }}</p>
        <a target="_blank" href="{{ $classes->file_link }}"><img src="{{ $classes->file_link }}" href="{{ $classes->file_link }}"  width="150px" height="300px"></a>
        <hr>
        
    </div>
@endforeach
@else 
<div>
    <h2 class="text-center">No posts found</h2>
</div>
@endif

所以我的问题是视图在用户搜索之前显示所有结果,我希望在搜索完成之前隐藏结果

如何实现?

【问题讨论】:

    标签: php html laravel database controller


    【解决方案1】:

    这是因为在第一次加载页面时,search 为 null,所以您将返回所有数据库!

    你可以这样修复它:

    class SearchController extends Controller
    {
    public function search(Request $request){
        // Get the search value from the request
        $search = $request->input('search');
        $classes = [];
        if($search) {
        // Search in the title and body columns from the posts table
            $classes = Classes::query()
                ->where('course_name', 'LIKE', "%{$search}%")
                ->orWhere('course_lecturer', 'LIKE', "%{$search}%")
                ->get();
        }
    
        // Return the search view with the results compacted
        return view('search', compact('classes'));
    }
    }
    

    【讨论】:

    • 谢谢,工作就像一个魅力,我不得不将 IF 条件从 "@if($classes->isNotEmpty())" 更改为 "@if(count($classes)) ",由于一些奇怪的原因,在视图中,它有时将空集合称为 null 并显示错误
    • 修复你可以这样初始化的问题:$classes = collect([]);
    • 感谢您提供更多信息 :)
    猜你喜欢
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多