我有一张桌子notices
。该表的模型为Notice.php
在此表中,我有notice
和id
列。
我从notices
表中获取了所有通知,并在我的视图中查看。这是我的控制器代码,用于获取所有通知。
public function index()
{
$notice = Notice::orderBy('id','desc')->paginate(5);
return view('teacher.notice')->withNotices($notice));
}
以下是我的观看代码,以显示所有通知。
@foreach($notices as $notice)
{{$notice->id}}
{{ $notice->notices }}
@endforeach
现在我想在这个foreach
循环中放两个按钮。一个是confirm
,另一个是remove confirmation
。
为了存储此confirmation
数据,我创建了另一个名为notice_confirmed_student
的表,该表的模型为noticeConfirmedStudent.php
。在这个表中有三列:
id
student_id
notice_id
如果学生点击确认,那么他的身份和通知ID将存储在此表中。我做得很完美。但我的问题是,在foreach
循环中,它一次显示两个按钮(confirm
和remove confirm
)。如果用户已经confirmed
没有收到此通知,我想显示确认按钮。如果用户已经确认该通知,则应显示remove confirmation
按钮。
在这里,我再次使用按钮给我的刀片foreach
循环以便更好地理解。 Bellow代码并不完美,我刚刚编写了这些代码来理解我的问题。
@foreach($notices as $notice)
{{$notice->id}}
{{ $notice->notices }}
<?php $student_id= "select student_id from notice_confirmed_student where notice_id=$notice->id"; ?>
@if ($student_id == $auth::user()->id)
<button>confirm</button>
@else
<button>Remove Confirmation</button>
@endif
@endforeach
提前致谢。
答案 0 :(得分:2)
这里很少有错误/不正确,为了说清楚,
Notice
&lt;&gt; User
关系为Many-Many
,notice_confirmed_student
为数据透视表。所以用户模型应该有关系,
public function confirmedNotices()
{
return $this->belongsToMany(Notice::class, 'notice_confirmed_student')
}
然后在每个循环中你可以检查,
if(in_array($notice-id, Auth::user()->confirmedNotices->pluck('id')->all())) {
// user confirmed
} else {
// user not confirmed.
}
答案 1 :(得分:1)
如果我正确理解了您的问题,您需要检查具有给定ID的记录是否存在notice_confirmed_student
表,然后检查您的循环。用你的通知检索确认的学生。
$notice = Notice::with('notice_confirmed_student_or_whatever_your_relation_method_called)')->orderBy('id','desc')->paginate(5);
然后检查循环,如果相关属性不像你在视图中那样是空的
@if($notice->my_attr && $notice->my_attr->user_id == \Auth::user()->id)
// do stuff
@else
// it doesn't has record
@endif