在laravel建立搜索功能5

时间:2016-05-30 03:31:01

标签: php laravel-5

我有这个观点来搜索姓名或电话号码。

<form method="POST" action="{{url('/telephone/search')}}">
 {!! csrf_field() !!}
<input type="text" name="search" placeholder="Name or Telephone no.">
<input type="submit" class="btn-btn-default" value="search">

重定向到此控制器的路线:

 public function search(Request $request)
  {
        $name=$request->get('search');
        $search=telephone::where('name','like',$name)
                         ->orWhere('Name','like',%$name)
                         ->orWhere('Name','like',$name%);
                            ->paginate(5);

        return view('telephone.searchview',['search'=>$search]);
}

然后应该显示这个观点:

    <thead style='background-color:silver'><tr><td>S.N.</td><td>Name</td><td>Telephone No.</td><td>Mobile No.</td><td>Options</td></tr></thead>
@if($search==NULL)
No Results!
@else    
@foreach ($search as $li)
    <tr><td></td><td>{{$li->Name}}</td><td>{{$li->telephone}}</td><td>{{$li->mobile}}</td>
    <td>here</td></tr></table>
    @endforeach
    {!! $search->render() !!}
 @endif

在orwhere语法中得到错误,也没有显示结果。

3 个答案:

答案 0 :(得分:0)

这可以像这样存档,或者你的表中有多列

$search = telephone::where('name', 'LIKE', '%$name%')->get();

答案 1 :(得分:0)

尝试使用

@if($search->count() == 0)

而不是

@if($search==NULL)

当然你应该使用适当的where参数,比如

$search=telephone::where('Name','like','%'.$name.'%')->paginate(5);

答案 2 :(得分:-1)

我认为问题在于你的语法,应该是

$search=telephone::where('name','like',$name)
                         ->orWhere('Name','like', "%$name")
                         ->orWhere('Name','like', "$name%");
                         ->paginate(5);

或更清楚,

->orWhere('Name','like', "%{$name}")

单引号

->orWhere('Name','like', '%'.$name)

然后,为了最好的方法。将您的查询简化为@ abiodun的回答

$search = telephone::where('name', 'LIKE', "%{$name}%")->paginate(5);