Laravel - 遍历嵌套集合
Laravel - Looping through a nested collection
获取全部所需数据的函数:
$auditResults = Audit::where('audit_id', $id)
->with('questionDetail')
->with('questionDetail.auditQuestion')
->get();
其中returns(精简):
Audit {#427 ▼
#relations: array:1 [▼
"questionDetail" => AuditQuestionDetail {#449 ▼
#relations: array:1 [▼
"auditQuestion" => AuditQuestion {#471 ▼
#original: array:5 [▶]
}
]
}
]
}
如何在视图中循环,以达到每个 Audit
的 auditQuestion
关系?
我试过:
@foreach($auditResults->questionDetail->auditQuestion as $answer)
但我得到:
Undefined property:
Illuminate\Database\Eloquent\Collection::$questionDetail
非常感谢。
** 第一个关系的问题:**
Collection {#470 ▼
#items: array:18 [▼
0 => Audit {#427 ▼
#fillable: array:4 [▶]
#attributes: array:7 [▶]
#original: array:7 [▶]
#relations: array:1 [▼
"questionDetail" => AuditQuestionDetail {#449 ▼
#table: "audit_questions_details"
#fillable: array:3 [▶]
#attributes: array:7 [▶]
#original: array:7 [▼
"id" => 2
"audit_question_id" => 2
"question_number" => 1
"comment" => 1
"header" => 0
"created_at" => "2017-03-26 13:40:18"
"updated_at" => "2017-03-26 13:40:18"
]
使用嵌套循环:
@foreach ($auditResults as $result)
@foreach ($result->questionDetail as $detail)
@foreach ($detail->auditQuestion as $question)
{{ $question->id }}
@endforeach
@endforeach
@endforeach
在Laravel 5.4中,你可以使用higher order messages干干净净:
@foreach($auditResults->map->questionDetail->map->auditQuestion as $answer)
获取全部所需数据的函数:
$auditResults = Audit::where('audit_id', $id)
->with('questionDetail')
->with('questionDetail.auditQuestion')
->get();
其中returns(精简):
Audit {#427 ▼
#relations: array:1 [▼
"questionDetail" => AuditQuestionDetail {#449 ▼
#relations: array:1 [▼
"auditQuestion" => AuditQuestion {#471 ▼
#original: array:5 [▶]
}
]
}
]
}
如何在视图中循环,以达到每个 Audit
的 auditQuestion
关系?
我试过:
@foreach($auditResults->questionDetail->auditQuestion as $answer)
但我得到:
Undefined property: Illuminate\Database\Eloquent\Collection::$questionDetail
非常感谢。
** 第一个关系的问题:**
Collection {#470 ▼
#items: array:18 [▼
0 => Audit {#427 ▼
#fillable: array:4 [▶]
#attributes: array:7 [▶]
#original: array:7 [▶]
#relations: array:1 [▼
"questionDetail" => AuditQuestionDetail {#449 ▼
#table: "audit_questions_details"
#fillable: array:3 [▶]
#attributes: array:7 [▶]
#original: array:7 [▼
"id" => 2
"audit_question_id" => 2
"question_number" => 1
"comment" => 1
"header" => 0
"created_at" => "2017-03-26 13:40:18"
"updated_at" => "2017-03-26 13:40:18"
]
使用嵌套循环:
@foreach ($auditResults as $result)
@foreach ($result->questionDetail as $detail)
@foreach ($detail->auditQuestion as $question)
{{ $question->id }}
@endforeach
@endforeach
@endforeach
在Laravel 5.4中,你可以使用higher order messages干干净净:
@foreach($auditResults->map->questionDetail->map->auditQuestion as $answer)