我有这张桌子:
Attendances
id | member_id
1 | 1
2 | 2
3 | 3
Members
id | name
1 | Joe
2 | Jane
3 | David
Positions
id | position_name
1 | art
2 | singer
3 | dancer
member_position
member_id | position_id
1 | 2
1 | 1
1 | 3
2 | 1
2 | 2
3 | 3
从出勤表中,我如何选择所有使用laravel雄辩的歌手参加过演唱会?
==== EDIT =====
出勤模式:
public function member()
{
return $this->belongsTo('App\Member');
}
会员型号:
public function positions()
{
return $this->belongsToMany('App\Position');
}
位置模型:
public function members()
{
return $this->belongsToMany('App\Member');
}
答案 0 :(得分:1)
您应该使用带有嵌套关系的whereHas方法。
$attendances = Attendance::with('member')
->whereHas('member.positions', function($query){
$query->where('id', 2);
})
->get();
foreach($attendances as $attendance){
echo $attendance->member->id;
}
答案 1 :(得分:1)
我很肯定,这将为您提供成员为歌手且具有嵌套成员关系模型的出席者。
insert into Table_A (EntryID, FirstName)
output inserted.EntryID, inserted.FirstName into Table_B (EntryID, Firstname)
values (102, 'Fred')
select *
from ILR_Test
where EntryID = 102
然后,您可以依次遍历结果:
$attendances = Attendance::whereHas('member.positions', function($query) {
$query->where('position_name', 'singers');
})->with('member')->get();