我试图创建一个搜索功能来遍历我的联系人表并返回类似于搜索输入的任何值,但我没有从搜索中获取数据。我在slack和youtube等上查找了许多不同的解决方案,但是我无法使其正常工作...
路线
Route::get('/search', 'ContactController@search')->name('contacts.search');
// Route::post('postSearch', ['as' => 'search', 'contacts' => 'contactsController@postSearch'])->name('contacts.postSearch');
Route::get('/postSearch', 'ContactController@postSearch')->name('contacts.postSearch');
// Route::get('/search/results/{query}{contact}','ContactController@postSearch')->name('contacts.postSearch');
search.blade.php(在通讯录文件夹中)*
@extends('layouts.master')
@section('content')
<div class="row">
<div class="col-md-12">
{{ Form::open(['route'=>'contacts.postSearch', 'method'=>'GET']) }}
@include('contacts.form_search')
{{ form::close() }}
</div>
</div>
@endsection
*搜索表单
<div class="container">
<div class="col-md-6 text-right">
<form action=" {{ route('contacts.postSearch') }} " method="get" class="form-inline">
<div class="input-group">
<input type="search" class="form-control" name="search" placeholder="search contacts">
</div>
<div class="input-group-prepend">
<button class="btn btn-primary" type="submit">Search</button>
</div>
</form>
</div>
</div>
联系人控制器
public function search()
{
return view('contacts.search');
}
public function postSearch(Request $request)
{
// dump($request->toArray());
$query = $request->get('search');
dump($query);
$contacts = DB::table('contacts')
->where('firstName', 'like', '%' . $query . '%')
->orWhere('lastName', 'like', '%' . $query . '%')
->orWhere('phone', 'like', '%' . $query . '%')
->orWhere('email', 'like', '%' . $query . '%');
// // ->orderBy();
dump($contacts);
// return $contacts;
return view('contacts.postSearch', ['contacts' => $contacts]);
}
联系人文件夹中的postSearch.blade.php
@extends('layouts.master')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<h2>Search Results</h2>
</div>
</div>
@if(isset($contacts))
<table class="table table-hover table-sm" style="margin-top:10px;">
<tr>
<th width = "100px">First Name</a></th>
<th width = "100px">Last Name <i class="fa fa-sort"></i></th>
<th width = "100px">Email <i class="fa fa-sort"></i></th>
<th width = "100px">Phone <i class="fa fa-sort"></i></th>
<th width = "100px">Birthday <i class="fa fa-sort"></i></th>
<th width = "180px">Action <i class="fa fa-sort"></i></th>
</tr>
@foreach ($contacts as $key => $value)
<tr>
{{-- Need to add in sort functions for each catagory --}}
<td>{{$value->firstName}}</td>
<td>{{$value->lastName}}</td>
<td>{{$value->email}}</td>
<td>{{$value->phone}}</td>
<td>{{$value->birthday}}</td>
<td>
<form action="{{ route('contacts.destroy', $value->id) }}" method="post">
<a class="btn btn-sm btn-success" href="{{ route('contacts.show', $value->id)}}">Show</a>
<a class="btn btn-sm btn-warning" href="{{ route('contacts.edit', $value->id)}}">Edit</a>
<a class="btn btn-sm btn-second" href="{{ route('contacts.createAddress', ['contact_id' => $value->id])}}">Add Address</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
@endif
</div>
@endsection
答案 0 :(得分:0)
要获取实际数据,需要执行以下操作:
public function postSearch(Request $request)
{
$query = $request->get('search');
$contacts = DB::table('contacts')
->where('firstName', 'like', '%' . $query . '%')
->orWhere('lastName', 'like', '%' . $query . '%')
->orWhere('phone', 'like', '%' . $query . '%')
->orWhere('email', 'like', '%' . $query . '%');
->get();
->get()
方法将返回数据。