Как сделать так, чтобы мое окно поиска работало правильно в laravel - PullRequest
0 голосов
/ 27 октября 2019

Мне нужно было искать информацию о животных в моем проекте, но, к сожалению, в моем контроллере я не знаю, что делать для его настройки.

    public function index()
    {
        $animals =Animal::all();
        $result = false;
        if (request()->has('search') && request()->get('search') != ''){
            $result = $animals->where('serial_number', 'like', "%" .request()->get('search')."%")->get();
        }
        return view('home', ['result' => $result])->with('message', 'Below is the result');
    }

Что мне изменить? Вот мой домашний вид

    @extends('layouts.app')

    @section('content')

        <form action="{{ route('home') }}">

            <div class="p-1 bg-light rounded rounded-pill shadow-sm mb-4">
                <div class="input-group">
                    <input type="search" name="search" placeholder="Here the animal serial number..." aria-describedby="button-addon1" class="form-control border-0 bg-light">
                    <div class="input-group-append">
                        <button id="button-addon1" type="submit" class="btn btn-link text-primary"><i class="fa fa-search"></i></button>
                    </div>
                </div>
            </div>
        </form>

        @if($result)
            <div class="container">
                <div class="row justify-content-center">
                    <div class="col-md-8">
                        <div class="card">
                            <div class="card-header">
                                <h3>Details for the animal</h3>

                            </div>
                            <div class="card-body">
                                <div class="col-12">
                                    <p><strong>Id: </strong>{{ $animal->id }}</p>
                                    <p><strong>Animal: </strong>{{ $animal->type->category }}</p>
                                    <p><strong>Gender: </strong>{{ $animal->gender }}</p>
                                    <p><strong>Place Of Birth: </strong>{{ $animal->user->address->city }}</p>
                                    <p><strong>Farm: </strong>{{ $animal->user->name }}</p>
                                    <p><strong>Date: </strong>{{ $animal->created_at }}</p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        @endif
    @endsection

это то, что я пытался сделать до сих пор, но все еще получаю ошибки, подобные этим

"Слишком мало аргументов для функции Illuminate \ Support \ Collection :: get (), 0передано в /Users/macair13/MeatracProject/app/Http/Controllers/HomeController.php в строке 30 и как минимум 1 ожидаемое "

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Вы можете изменить свой код, как показано ниже

    public function index()
    {
        if (Input::has('search') && Input::get('search') != null){
            $result = Animal::query()->where('serial_number', 'like', "%" .Input::get('search')."%")->get();
        }else{
            $result = [];
        }
        return view('home', ['result' => $result])->with('message', 'Below is the result');
    }
0 голосов
/ 27 октября 2019

Вот как я искал в laravel:

Моя форма:

<form action="{{route('search')}}" method="post">
{{csrf_field()}}
 <input type="search" name="search" placeholder="Here the animal serial number..." aria-describedby="button-addon1" class="form-control border-0 bg-light">
 <button id="button-addon1" type="submit" class="btn btn-link text-primary"><i class="fa fa-search"></i></button>

</form>

Мой Web.php:

Route::post('search','PageController@Search')->name('search');

PageController:

public function Search(Request $request)
  {
    $serial_number= $request->input('search');
    $results =DB::table('animals')->where(function ($query) use ($serial_number) {
     $query->where('serial_number','LIKE',"%$serial_number%");
      })->latest()->get();
    return view('search',compact('results'));

  }
...