Laravel Seeder - 在for循环中迭代数组

时间:2017-03-27 22:02:56

标签: php arrays laravel for-loop laravel-5.4

我想基于另一个表格行中的ID为一个表格列播种。

行数:

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

返回一个ID数组(其中18个)。

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

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

如何遍历数组并添加ID?

1 个答案:

答案 0 :(得分:0)

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

这样的事情能满足你的需求吗? 在遍历$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]);
}