如何通过外键使用 Eloquent 搜索查询

埃萨姆·穆罕默德

我试图通过在列(患者 ID)中搜索来在(预订)表中创建搜索框,该列是(患者)表的外键,而该列(患者 ID)通过 foreach {{$ booking->patient->patient_name }} ,问题是我不知道如何通过我的控制器(BookingController)中的(patient_id)搜索(patient_name),有帮助吗?对不起我的语言:(

这是我的预订控制器:

public function index()
{
    $search = \Request::get('search');

     $bookings = Booking::with('patient')->where('status','=', null)-
>where('patient_name','like', '%'. $search. '%' )->paginate(10);

     return view('booking.index')->withBookings($bookings);
}

我的预订模式:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Eloquent;

class Booking extends Eloquent
{

public function patient()
{
return $this->belongsTo('App\Patient'); 

}
} 

我的患者模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Eloquent;
class Patient extends Eloquent
{
 public function booking()
{
return $this->hasMany('App\Booking'); 

}
}

更新..这是索引页

    {!! Form::open(['method'=>'GET','url'=>'booking','class'=>'navbar-form navbar-left','role'=>'search'])  !!}
<a href="{{ url('booking.index') }}" class="btn btn-primary btn-sm"><span class="glyphicon glyphicon-plus"></span> Add</a>

<div class="input-group custom-search-form">
    <input type="text" class="form-control" name="search" placeholder="Search...">
    <span class="input-group-btn">
        <button class="btn btn-default-sm" type="submit">
            <i class="fa fa-search"> <span class="hiddenGrammarError" pre="" data-mce-bogus="1"></span></i>
        </button>
    </span>
</div>
{!! Form::close() !!} 
           <th>حجز باسم</th>
                        <th>القيمة</th>
                        <th>اسم الطبيب</th>
                        <th>النوع</th>
                    </tr> 
                  </thead>
                  <div ng-controller="myController">
                  <tbody>
                    @foreach ($bookings as $booking)
                          <tr ng-repeat="booking in bookings|filter:searching">
                            <td align="center">
                              <a href="{{route('booking.edit',$booking->id)}}" class="btn btn-default"><em class="fa fa-pencil"></em></a>
                              <a class="btn btn-danger"><em class="fa fa-trash"></em></a>
                            </td>
                            <td class="hidden-xs">{{$booking->id }}</td>


                 <th>{{$booking->booking_date }}</th>
                 <th>{{$booking->patient->patient_name }}</th>
                 <td>{{$booking->value }}</td>
                 <td>{{$booking->doctor_name }}</td>
                 <td>{{$booking->tybe }}</td>
                          </tr>
                @endforeach          
                        </tbody>
                </table>

              </div>
              <!--
              <div class="panel-footer">
                <div class="row">
                  <div class="col col-xs-4">Page 1 of 5
                  </div>
                  <div class="col col-xs-8">
                    <ul class="pagination hidden-xs pull-right">
                      <li><a href="#">1</a></li>
                      <li><a href="#">2</a></li>
                      <li><a href="#">3</a></li>
                      <li><a href="#">4</a></li>
                      <li><a href="#">5</a></li>
                    </ul>
                    <ul class="pagination visible-xs pull-right">
                        <li><a href="#">«</a></li>
                        <li><a href="#">»</a></li>
                    </ul>
                  </div>
                </div>
              </div>
            -->
            </div>
          </table>
<div class="text-center">
            {!! $bookings->links(); !!}
       </div>
</div></div></div>  
穆罕默德 b

急切加载

$bookings = Booking::with(['patient' => function($query) use ($search){
     $query->where('patient_name', 'like', '%' . $search . '%');
}])->where('status','=', null)->paginate(10);

或者,如果您不确定是否将患者分配给所有预订,则应使用如下查询:

$bookings = Booking::whereHas('patient', function ($query) use ($search) {
     $query->where('patient_name', 'like', '%' . $search . '%');
})->where('status','=', null)->paginate(10);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章