我正在下载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();
访问此数据的正确方法是什么?
答案 0 :(得分:1)
我不知道您的first()
为什么要给您返回一个数组(如果所有代码都已发布并且没有其他片段),但是如您所见,在JSON中,第一个字符是[
,最后一个是]
,因此您要处理的是一个数组。不确定$survey->name
的工作方式如何,相反,您应该做的是访问数组而不是获得所需的值:
$survey[0]->name;
@foreach($survey[0]->survey_questions as $question)
{{$question}}
@endforeach
...
答案 1 :(得分:1)
我相信您在Survey Model中定义了surveyQuestions()
方法,如果是,则您的foreach
应该像
@foreach($survey->surveyQuestions as $question)
{{$question}}
@endforeach
答案 2 :(得分:0)
您应该将数组发送到foreach
,但是您发送了json
尝试
@foreach(json_decode ($survey->survey_questions,true) as $question)
{{$question}}
@endforeach