2017-04-17 11 views
1

기본 약속 시스템을 만들려고합니다. 사용자가 로그인하면 if 성명에는 개인 약속이 표시되어야하지만 현재는 모든 사람의 약속이 표시됩니다.foreach 루프 내에서 if 문을 사용하는 경우

if 문의 목적은 이러한 약속이 내 appointments 테이블이 user_id을 가지고 있으며, 내 users 테이블 단지를 가지고

가이 사용자 ID를 사용하는 모든 약속을하고 표시 있는지 확인하기 위해 자신의 사용자 ID를 확인하는 것입니다

일반 id. 같은 appointment->user_idappointment 관련된 user->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

항상 모든 사람의 약속을 표시합니다.

나는 당신이 당신의 if 문을 변경하고와 비교한다고 생각 사용자 세션 ID로 로그인 한 다음과 같은 :

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

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

우수한 작품입니다. 감사합니다! – TF120

2

대신 문 우리가 약속을 선택하여보기에서 논리를 줄일 수 있다면이 중첩 사용 우리는 그렇게하는 대신 통과하는 모든 약속의 컨트롤러에 인증 된 사용자와 관련된 작업을 수행합니다

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

그래서보기에 당신은 필요없이 그들을 통해 루프 만 foreach($appointments as $appointment)을 사용할 수 있습니다 약속이 현재 사용자와 관련이 있는지 여부를 확인합니다.