//示例数据库
最初的学者有1,2,3,4,5,6个ids
Scholar
Id
1
2
3
4
5
6现在,1和2是在表成员下进行的
Member
Id
1 - taken
2 - taken接下来的3和4是在表AddRequest下进行的
AddRequest
Id
3 - taken
4 - taken现在,学者表应该只有我想要显示的i 5和6。
如何使用下面的代码解决此问题
public function ListOrgaScholar($ship_id)
{
$members = Member::where('ship_id','=',$ship_id)->get();
$members = $members->toArray();
$scholar_ids = array_pluck($members, 'scholar_id');
$scholar_exits = Scholar::whereNotIn('scholar_id', $scholar_ids)->get();
$requests = AddRequest::where('ship_id','=',$ship_id)->get();
$requests = $requests->toArray();
$scholar_ids = array_pluck($requests, 'scholar_id');
$add_exits = Scholar::whereNotIn('scholar_id', $scholar_ids)->get();
if ($scholar_exits == true && $add_exits == true) {
$scholars = (new Scholar)->newQuery()->select('*');
$scholars = $scholars->get();
dd($scholars);
}else{
}
}dd的结果
Collection {#302 ▼
#items: array:7 [▼
0 => Scholar {#305 ▶}
1 => Scholar {#306 ▶}
2 => Scholar {#307 ▶}
3 => Scholar {#308 ▶}
4 => Scholar {#309 ▶}
5 => Scholar {#310 ▶}
6 => Scholar {#311 ▶}
]
}发布于 2016-12-06 00:17:08
在对学者成员和addRequests进行了所有检查之后,您正在尝试从学者表中选择所有内容,这就是为什么您将获得所有六条记录的原因。
我会向scholar表中添加两个字段,比如is-member和has-request,并根据- is-member becomes true when the Scholar transitions to become a member和has-request becomes true when the Scholar add a request之类的事件将布尔值更新为true。因此,很容易找到既不是会员也没有任何要求的学者。
然而,对于您的情况,我认为您应该尝试如下所示:
public function ListOrgaScholar($ship_id)
{
$scholar_ids = [];
$members = Member::where('ship_id','=',$ship_id)->get();
//$members = $members->toArray();
//$scholar_ids = array_pluck($members, 'scholar_id');
//$scholar_exits = Scholar::whereNotIn('scholar_id', $scholar_ids)->get();
foreach($members as $member){
$scholar_ids[] = $member->scholar_id;
}
$requests = AddRequest::where('ship_id','=',$ship_id)->get();
//$requests = $requests->toArray();
//$request_scholar_ids = array_pluck($requests, 'scholar_id');
//$add_exits = Scholar::whereNotIn('scholar_id', $scholar_ids)->get();
foreach($requests as $request){
$scholar_ids[] = $request->scholar_id;
}
$scholars = Scholar::whereNoIn('scholar_id', $scholar_ids)->get();
dd($scholars);
}https://stackoverflow.com/questions/40974644
复制相似问题