Laravel中的搜索功能出现问题

问题描述 投票:0回答:1

我正在尝试创建一个搜索功能以遍历我的联系人表并返回类似于搜索输入的任何值,但是我没有从搜索中获取数据。我在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]);
    }

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
php laravel search
1个回答
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()方法将返回数据。

© www.soinside.com 2019 - 2024. All rights reserved.