首页 > 解决方案 > 尝试浏览对象时为 foreach() 提供的参数无效。刀片 - Laravel

问题描述

我正在制作要下载的 pdf 报告,这是相关数据。我正在尝试浏览,但我遇到了麻烦

[ 
   { 
      "id":1,
      "name":"asdfasd",
      "description":"fasdfasdfafa",
      "user_id":1,
      "anonymous":0,
      "created_at":"2019-12-09 10:30:50",
      "updated_at":"2019-12-09 10:33:25",
      "survey_questions":[ 
         { 
            "id":1,
            "question":"asfdasdfsdf",
            "user_id":1,
            "survey_section_id":1,
            "response_type_id":1,
            "optional":0,
            "num":null,
            "rank":null,
            "show_text":0,
            "created_at":"2019-12-09 10:29:27",
            "updated_at":"2019-12-09 10:29:27",
            "pivot":{ 
               "survey_id":1,
               "survey_question_id":1
            }
         }
      ],
      "answer":[ 

      ],
      "evaluation":{ 
         "id":1,
         "survey_id":1,
         "init_date":"2019-12-04 00:00:00",
         "end_date":"2019-12-07 00:00:00",
         "report_date":"2019-12-08 00:00:00",
         "created_at":"2019-12-09 10:30:50",
         "updated_at":"2019-12-09 10:33:25",
         "evaluation_results":[ 

         ]
      }
   }
]

它被称为$survey,我尝试过做几件事

$survey->name; //works
$survey->survey_questions; //no result when there should be
$survey->evaluation; //works while the survey_questions doesn't

我想访问其他的东西survey_questions, answer,然后访问里面的东西。

当我尝试这个时,我得到了提到的错误Invalid argument supplied for foreach()

@foreach($survey->survey_questions as $question)
   {{$question}}
@endforeach

这就是我从控制器发送数据的方式

$survey = Survey::with('surveyQuestions', 'answer', 
'evaluation', 'evaluation.evaluationResults')
            ->where('id', $id)->first();

$pdf = App::make('dompdf.wrapper');
$pdf->loadView('pdf.report', ['survey' => $survey]);
return $pdf->stream();

访问这些数据的正确方法是什么?

标签: laravellaravel-blade

解决方案


我相信您surveyQuestions()在调查模型中定义了方法,如果是这样,那么您foreach应该像

@foreach($survey->surveyQuestions as $question)
   {{$question}}
@endforeach

推荐阅读