Laravel搜索工具不提供输出

时间:2016-04-15 08:39:22

标签: php mysql laravel eloquent laravel-5.2

我正在执行搜索工具功能,该功能可以从文本框中获取值(我已检查过),并与“技能”进行比较。专栏'技巧'表。如果匹配任何一个字符或整个单词它应输出来自' handymen'表格,这些表格与' hasMany'和' belongsToMany'在模型中。

然而问题是我确实得到输出,但即使我在文本框中输入一个空字符串,它也是所有杂工的亮点。

控制器:

    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'));
}

查看搜索:

@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

查看详细信息 - 这应该是我的结果:

@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

1 个答案:

答案 0 :(得分:1)

$searchTerms变量在哪里进入details()函数? 你省略了一些代码吗?

我觉得它是以某种方式在详细信息函数中设置的,如果是这种情况,那么你就不会将$searchTerms传递给whereHas闭包的范围。

尝试将其添加到闭包的use部分,如下所示:

function details() {
    // .. somehow get $searchTerms first here.

    $handymen = Handyman::whereHas('skills', function($query) use($searchTerms) {
        if(!empty($searchTerms)){
            foreach($searchTerms as $skill) {
               $query->where('skill', 'LIKE', '%'. $skill .'%');
            }          
         }
    })->get();
}