不廢話,直接上code。
Route:
// web.php
Route::post('search/', 'UserController@search')->name('search');
Controller使用UserController:
// UserController.php
public function search(Request $request)
{
$response = DB::table('posts')
->leftJoin('users', 'posts.user_id', '=', 'users.id')
->where('content', 'like', '%'.$request->input('keyword').'%')
->get();
return view('search')->with('responses', $response);
}
like
在查詢中視作一種where
方法的運算子,這段查詢相當於找字串中符合條件的資料。
我在Home中增加一個搜尋欄位,長這樣。
剩下就是另外一個View的事了。我增加了一個View search.blade.php
,well,它幾乎跟Home一樣。
@extends('layouts.app')
@section('content')
<div class="card">
<div class="card-header">Dashboard</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
<form method="POST" action="{{ route('search') }}">
@csrf
<input type="text" name="keyword">
<button type="submit" class="btn btn-primary">Search</button>
</form>
<form method="GET" action="{{ route('home') }}">
<button type="submit" class="btn btn-primary">Back</button>
</form>
</div>
@if(isset($responses))
@foreach($responses as $response)
<div class="card">
<div class="card-header">{{ $response->name }}</div>
<div class="card-body">
<p>{{ $response->content }}</p>
</div>
</div>
@endforeach
@endif
</div>
@endsection
Ok,搜尋功能搞定XDDDDDDDDD