将搜索约束结果转化为数据库数据

Turning search constraint results into database data

目前我有一个搜索表单,我可以在其中查询我的数据库以查找“击球手”的姓名和国籍。这在显示击球手匹配约束方面效果很好,但我试图创建一些文本来告诉用户他们搜索的内容。目前我可以 return nationality_ID 的 id 值,但我想 return nationality_id 的名称字段,这是我目前所拥有的:

表:击球手::ID,姓名,Nationality_ID; 国籍: 身份证、姓名、 评论:ID,评论,batsmen_id

搜索表单:

 {!! Form::open(['route' => 'search.index', 'method' => 'GET']) !!}
                    <div class="form-group">

                    {!! Form::label('batsmenname', 'Search By Name:') !!}
                    {!! Form::text('batsmenname', null, array('class' => 'form-control')) !!}
                </div>
                </div>
        <div class="col-md-6">
            <div class="form-group">
                {!! Form::label('nationality_id', 'Search By Nation:') !!}
                <select class="form-control" name="nationality_id" >
                    <option value=""></option>

                    @foreach($nationality as $nation)

                        <option value="{{$nation->id}}">{{$nation->name}}</option>
                    @endforeach
                </select>

            </div>
           <div class="form-group">
           {!! Form::submit('Find Batsmen', array('class' => 'btn-send btn-lg btn-block')) !!}

            {!! Form::close() !!}
           </div>

控制器:

public function index(Request $request)
    {
        $batsmenQuery = Batsmen::where('approved', '=', 1)
        $nationality = Nationality::all()->sortBy('name') ;

        $batname=$request->input('batsmenname');
        $location=$request->input('nationality_id');

        if(!empty($batname)){
        $batsmenQuery->where('batsmenname', 'LIKE', '%'.$batname.'%')->get();
        }

        if(!empty($location)){
        $batsmenQuery->where('nationality_id', $request->input('categories_id') )->get();
        }
        $batsmen= $batsmenQuery->paginate(40);

        return view('page.search')->withBatsmen($batsmen)->withBatname($batname)->withLocation($location)



}

击球手模型:

   public function nationality(){
         return $this->belongsTo('App\Nationality','nationality_id');
    }

结果HTML:

<h4 class="result">{{($batsmen->total())}} batsmen found matching your search criteria: ('{{$batname}}', {{$location}})</p>

问题是我如何获取显示在 $location 中的 ID 号以显示 name 字段Nationality_ID?

为您搜索的 nationality_id 找到 Nationality 型号:

if ($nationality = Nationality::find($request->input('nationality_id'))) {
    $nationality_name = nationality->getAttribute('name');
} else {
    abort(404, 'No matching nationality for id ' . $request->input('nationality_id') . ' found.');
}

将其更改为正确的复数形式:

$nationalities = Nationality::all()->sortBy('name') ;

并且 return 到视图:

return view('page.search',compact('batsmen', 'batname', 'nationalities', 'nationality_name'));

那么在你看来,使用:

{{ $nationality_name }}

而不是:

{{ $location }}

像这样:

<h4 class="result">
     {{ $batsmen->count() }} batsmen found matching your search criteria: ('{{ $batname }}', {{ $nationality_name }})
</h4>

我也将 total() 更改为 count()。