2017-04-17 73 views
1

我試圖創建一個基本的預約系統。當用戶登錄時,if聲明應顯示其個人約會,但此時它顯示每個人的約會。如果語句在一個foreach循環中

if聲明的目的是檢查自己的用戶名,看是否有使用該用戶ID的任何任命,並顯示這些任命

appointments表有user_id,我users表只是有一個定期id

@section('content') 
    <h1>Your Appointments</h1> 
    @foreach ($appointments as $appointment) 
     @if ($appointment->user->id == $appointment->user_id) 
      <p> 
       <a href="{{url('details/'.$appointment->id)}}" >{{$appointment->doctor->name}} : {{$appointment->time}} : {{$appointment->date}}</a>   
      </p> 
     @endif 
    @endforeach 
@endsection 

回答

1

它會始終顯示每個人的約會,因爲你是用相同的appointment->user_id比較appointment相關user->id

我相信你應該改變你的if發言,並與比較登錄的用戶會話ID象下面這樣:

$logged_user_id = Auth::user()->id; 

@if ($logged_user_id == $appointment->user_id) 
+0

這很好,謝謝! – TF120

2

不使用該嵌套的if語句,我們可以通過選擇約會減少視圖中的邏輯所以在你的控制,而不是通過所有的約會有關身份驗證的用戶,我們將做到:

$appointments = Appointment::where('user_id', Auth::user()->id); 

所以在你看來,你可以通過他們只使用foreach($appointments as $appointment)循環,而無需檢查約會是否與當前用戶有關。