如果foreach循环中的语句

时间:2017-04-17 21:21:10

标签: php laravel laravel-blade

我正在尝试创建一个基本的约会系统。当用户登录时,if语句应该显示他们的个人约会,但此时它正在显示每个人的约会。

if语句的目的是检查其用户ID,以查看是否有任何使用此用户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

2 个答案:

答案 0 :(得分:2)

我们可以通过选择与经过身份验证的用户相关的约会来减少视图中的逻辑,而不是使用这个嵌套的if语句,因此在控制器中而不是传递我们将要执行的所有约会:

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

因此,在您的视图中,您只能使用foreach($appointments as $appointment)循环播放它们,而无需检查约会是否与当前用户相关。

答案 1 :(得分:1)

它会始终显示所有人的约会,因为您要将appointment关联的user->id与同一appointment->user_id进行比较。

我相信您应该更改if语句并将其与登录的用户会话ID进行比较,如下所示:

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

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