2017-06-30 36 views
-1

我試圖通過在列(patient_id)中搜索來在(預訂)表中搜索框,並且此列是(患者)表的外鍵,並且此列(patient_id)通過foreach {{$ booking-> patient-> patient_name}}獲取(patient_name)的數據,問題是我不知道如何通過(patient_id)在我的控制器(BookingController)中搜索(patient_name),任何幫助?對不起,我的語言:(如何使用通過外鍵的Eloquent搜索查詢

這是我的訂房控制器:

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

} 
} 

修訂..This是索引頁

{!! 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> 

回答

0

Eager Loading

$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); 
+0

感謝穆罕默德B,但我收到以下錯誤:ErrorException 未定義的變量:搜索 –

+0

@EsamMohamed我編輯了我的答案檢查並再次測試 –

+0

正確加載表的內容,但是當搜索我收到此錯誤試圖獲取非對象的屬性 –

-1

嘗試:

dd($search);

如果你從一些輸入搜索嘗試使用:

$serach = $request->serach;

+0

對不起,但在哪裏添加此?是的搜索工作良好,但沒有與外鍵 –