Laravel Seeder - 在 for 循环中遍历数组

Laravel Seeder - iterate through an array within a for loop

我想根据另一个 table 的行中的 ID 为 table 的列播种。

行数:

$audits = Audit::where('audit_id', $auditScore->id)->pluck('id')->all();

其中 returns 个 ID 数组(其中 18 个)。

对于上述数组中的每个 ID,我想将它们添加到以下结果的 with 关系中的每个结果中:

$reAudit = ReAuditScore::where('audit_score_id', $auditScore->id)
                         ->with('audits')
                         ->get();

如何遍历数组并添加 ID?

这是一个不完整的答案,因为我没有完全理解您的要求。但是,在这里回复比在评论中回复更容易。

这样的东西能满足您的要求吗? 遍历 $reAudit->audits 时,您需要确保 $auditIds 的数量相等,或者在使用前检查它们是否存在。

$auditIds = Audit::where('audit_id', $auditScore->id)->pluck()->all();
$reAudit = ReAuditScore::where('audit_score_id', $auditScore->id)
    ->with('audits')
    ->get();

foreach ($reAudit->audits as $i => $audit) {
    if (! empty($auditIds[$i]) {
        $audit->update(['audit_id' => $auditIds[$i]]);
    }
}

或者从另一个方向接近它:

$auditIds = Audit::where('audit_id', $auditScore->id)->pluck()->all();
$reAudit = ReAuditScore::where('audit_score_id', $auditScore->id)
    ->with('audits')
    ->get();

foreach ($auditIds as $i => $auditId) {
    if (! ($audit = $reAudit->audits->get($i))) break;
    $audit->update(['audit_id' => $auditId]);
}