如何在Laravel 5.4中实现搜索功能

我是Laravel的新手,对如何在我的应用程序中实现搜索功能有一些理解上的问题。

我到目前为止所尝试的。

我创建了一个从数据库获取数据的模型(这是有效的)

class Post extends Model
{
    public static function scopeSearch($query, $searchTerm)
    {
        return $query->where('city', 'like', '%' .$searchTerm. '%')
                     ->orWhere('name', 'like', '%' .$searchTerm. '%');
    }
}

我的控制器看起来像这样:

use App\Post;

    class PostsController extends Controller
    {
        public function index(Request $request) 
        {
            $searchTerm = $request->input('searchTerm');
            $posts = Post::all()
            ->search($searchTerm);
            return view('posts.index', compact('posts', 'searchTerm'));
        }

       public function show($id)
       {
           $post = Post::find($id);
           return view('posts.show', compact('post'));
       }
    }

有了php artisan tinker,模型就可以正常工作了。我正在获取db查询。

在前端,我有一个简单的输入栏和一个提交按钮:

<div class="container">
    <div class="col-sm-8">
        <form action="posts.index" method="GET">
            {{csrf_field()}}
            <div class="input-group">
                <input type="text" class="form-control" name="searchTerm" placeholder="Search for..." value="{{ isset($searchTerm) ? $searchTerm : '' }}">
                <span class="input-group-btn">
                    <button class="btn btn-secondary" type="submit">Search</button>
                </span>
            </div>
        </form>
    </div>
</div>

但是,现在,如果我在搜索输入字段中输入了一些内容,我如何从控制器检索数据呢?只有当我得到所有的帖子时,代码才能工作。我需要以某种方式包含来自控制器的serachTerm

@extends('layouts.master')

@section('content')
<div class="col-sm-8 blog-main">
    @foreach($posts as $post)
        <div class="card" style="margin-bottom: 10px">
            <div class="card-block">
                <h3 class="card-title">{{ $post->Name1 }}</h3>
                <small>Created at: {{ $post->created_at->toFormattedDateString() }}</small>
                <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
                <a href="{{$post->id}}" class="btn btn-primary">Details</a>
            </div>
        </div>
    @endforeach

</div>
@endsection

转载请注明出处:http://www.cjhyc.com/article/20230602/1570428.html