首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个不属于其他两个表的表中访问数据

从一个不属于其他两个表的表中访问数据
EN

Stack Overflow用户
提问于 2016-12-05 20:48:17
回答 1查看 48关注 0票数 0

//示例数据库

最初的学者有1,2,3,4,5,6个ids

代码语言:javascript
复制
Scholar      
Id      
1   
2
3
4
5
6

现在,1和2是在表成员下进行的

代码语言:javascript
复制
Member 
Id
1 - taken
2 - taken

接下来的3和4是在表AddRequest下进行的

代码语言:javascript
复制
AddRequest
Id
3 - taken
4 - taken

现在,学者表应该只有我想要显示的i 5和6。

如何使用下面的代码解决此问题

代码语言:javascript
复制
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的结果

代码语言:javascript
复制
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 ▶}
  ]
}

This for Member and AddRequest Table

This for Scholar

EN

回答 1

Stack Overflow用户

发布于 2016-12-06 00:17:08

在对学者成员和addRequests进行了所有检查之后,您正在尝试从学者表中选择所有内容,这就是为什么您将获得所有六条记录的原因。

我会向scholar表中添加两个字段,比如is-memberhas-request,并根据- is-member becomes true when the Scholar transitions to become a memberhas-request becomes true when the Scholar add a request之类的事件将布尔值更新为true。因此,很容易找到既不是会员也没有任何要求的学者。

然而,对于您的情况,我认为您应该尝试如下所示:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40974644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档