You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel控制器foreach循环中如何拼接获取多个country对应的division数据

解决方案

你之前的写法存在两个问题:一是每次循环都直接给$dis赋值,新的查询结果会覆盖上一轮的结果,所以只能拿到最后一个国家的Division数据;二是拼接字符串的写法只是把国家名拼接成了普通字符串,没法直接用于查询。
下面提供两种符合你要求的实现方式:

方式1:循环追加查询结果(匹配你想要的循环查询逻辑)

把$dis初始化为Laravel集合,每次循环将当前查询到的Division数据合并到集合中即可:

$countries = DB::table('countries')->where('student_id', '=', $id)->get();
// 初始化空集合存储所有Division数据
$dis = collect();
foreach($countries as $country){
   $currentDis = DB::table('divisions')->where('country_name', '=', $country->country_name)->get();
   // 合并当前查询结果到总集合
   $dis = $dis->merge($currentDis);
}
dd($dis);

方式2:更高效的一次性查询(推荐)

不需要循环查数据库,先把学生关联的所有国家名提取为数组,再用whereIn一次查询出所有匹配的Division数据,仅需要2次SQL查询,性能远高于循环查询:

// 直接提取学生关联的所有国家名数组
$countryNames = DB::table('countries')->where('student_id', $id)->pluck('country_name');
// 一次性查询所有对应Division数据
$dis = DB::table('divisions')->whereIn('country_name', $countryNames)->get();
dd($dis);

内容的提问来源于stack exchange,提问作者Sayma Obaida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:06:10