Ich mache eine Suchfunktion Funktion, die einen Wert aus einer Textbox bekommen (es tut, dass ich überprüft habe) und vergleicht mit der Spalte "skill" in der Tabelle "Skills". Wenn es eine Übereinstimmung gibt, entweder ein Zeichen oder ein ganzes Wort Es sollte Details aus der 'handyman'-Tabelle ausgeben, diese Tabellen sind mit' hasMany 'und' goesToMany 'in Modellen verknüpft.Laravel Suchfunktion gibt keine Ausgabe
Allerdings ist das Problem, dass ich Ausgabe bekomme, aber es ist ein Licht von allen Handwerker, auch wenn ich eine leere Zeichenfolge in Textfeld eingeben.
Controller:
function search()
{
$skills = Skill::all();
return view('layouts/search',['skills' => $skills]);
}
//$searchTerm = request('skill');
function details() {
$handymen = Handyman::whereHas('skills', function($query) {
if(!empty($searchTerms)){
foreach($searchTerms as $skill) {
$query->where('skill', 'LIKE', '%'. $skill .'%');
}
}
})->get();
return view('layouts/details', compact('handymen'));
}
View-Suche:
@extends('layouts.master')
@section('title', 'Search Page')
@section('content')
<h1>Here you can search</h1>
<form action="{{url('details')}}" method="POST">
{{ csrf_field() }}
<div>
<input type='text' name='skill' />
</div>
<input type="submit" name="submitBtn" value="Search">
</form>
@endsection
View-Details-hier sollte meine Ergebnisse sein:
@extends('layouts.master')
@section('title', 'Add Job')
@section('content')
<h1>Handyman details</h1>
<ul>
@foreach ($handymen as $handyman)
<a href= "{{url('skilledHandyman/'.$handyman->id)}}">
{{$handyman->first_name}}</a>
@endforeach
</ul>
@endsection
, warum das für jede Schleife? foreach ($ searchTerms als $ skill)? setze dies in Funktionsdetails und entkomme es aus $ searchTerm = $ request-> input ('skill'); –