2017-03-26 8 views
2

機能をループ:Laravel - すべての必要なデータを取得するために、ネストされたコレクションを

$auditResults = Audit::where('audit_id', $id) 
    ->with('questionDetail') 
    ->with('questionDetail.auditQuestion') 
    ->get(); 

(合理化)を返します。

Audit {#427 ▼ 
    #relations: array:1 [▼ 
    "questionDetail" => AuditQuestionDetail {#449 ▼ 
     #relations: array:1 [▼ 
     "auditQuestion" => AuditQuestion {#471 ▼ 
      #original: array:5 [▶] 
     } 
     ] 
    } 
    ] 
} 

どのように到達するために、ビュー内の私がループすることができますがauditQuestionの関係は、それぞれAudit

@foreach($auditResults->questionDetail->auditQuestion as $answer) 

をしかし、私は得る::

私が試してみました

未定義のプロパティ: を照らし\データベース\雄弁\コレクション:: $ 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" 
      ] 

答えて

2

、あなたはきれいにこれを行うにはhigher order messagesを使用することができます。

@foreach($auditResults->map->questionDetail->map->auditQuestion as $answer) 
+0

残念ながら、これは 'Undefined property:Illuminate \ Database \ Eloquent \ Collection :: $ map'を返します。 – Ben

+1

可能であれば、あなたのLaravelバージョンの更新を検討します。それ以外の場合は、@Alexey Mezenin – bradforbes

+0

のコメントを削除することができます。 – bradforbes

1

使用ネストされたループ:Laravel 5.4で

@foreach ($auditResults as $result) 
    @foreach ($result->questionDetail as $detail) 
     @foreach ($detail->auditQuestion as $question) 
      {{ $question->id }} 
     @endforeach 
    @endforeach 
@endforeach 
+0

ありがとうございますが、上記を使用すると '未定義変数:questionDetail'が返されます。また、 'questionDetail'の前に$がありますが、下の行に' auditQuestion'がない理由はありますか? – Ben

+0

@Ben typoがありました。 'questionDetail'の前に' $ '記号を削除してください。 –

+0

ありがとうございます。このエラーを返します。 – Ben

関連する問題