gpt4 book ai didi

php - 访问一个表中不属于其他两个表的数据

转载 作者:行者123 更新时间:2023-11-29 19:45:58 25 4
gpt4 key购买 nike

//示例数据库

起初 Scholar 有 1,2,3,4,5,6 个 id

Scholar      
Id
1
2
3
4
5
6

现在 1 和 2 已在表 Member 下获取

Member 
Id
1 - taken
2 - taken

接下来的 3 和 4 是在表 AddRequest 下获取的

AddRequest
Id
3 - taken
4 - taken

现在 Scholar 表应该只有我想要显示的 ID 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 ▶}
]
}

This for Member and AddRequest Table

This for Scholar

最佳答案

在检查了membersaddRequests之后,您尝试从Scholar表中选择所有内容,这就是您的原因获取全部六条记录。

我将向 scholar 表添加两个字段,例如 is-memberhas-request ,并根据以下条件将 bool 值更新为 true诸如 - 当学者转变为成员时,is-member 变为 true 以及当学者添加请求时 has-request 变为 true 或类似事件。这样一来,找到既不是成员(member)也没有任何要求的学者就变得很容易了。

但是就你的情况而言,我认为你应该尝试如下:

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);
}

关于php - 访问一个表中不属于其他两个表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40974644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com