如何在 laravel json 文件中传递多个值?

Posted

技术标签:

【中文标题】如何在 laravel json 文件中传递多个值?【英文标题】:How to pass multiple value in laravel json file? 【发布时间】:2021-01-16 22:38:41 【问题描述】:

我正在使用 laravel api。我在通过 laravel json 传递迭代值时遇到了麻烦。这里是代码...

 public function show($quizResultId)

    //QuizResult
    $quizResult=QuizResult::findOrFail($quizResultId);
    $quizSessionId=$quizResult->session_id;
    //QuizSessionAns
    $quizSessionAns=QuizSessionAnswer::where('session_id','=',$quizSessionId)->get();
    $quizSessionAns=$quizSessionAns->pluck('selected_choice_id');
    //QuizSession
    $quizSession=QuizSession::findOrFail($quizSessionId);
    //Question with Choices
    $quizId=$quizSession->quiz_id;
    $quiz=Quiz::with('questions.choices')->findOrFail($quizId);
    $questions=$quiz->questions;
    
    $questionLimit=$questions->count();

    for($i=0;$i<$questionLimit;$i++)
        $questionChoice=$questions[$i];
        $chosenAns=$quizSessionAns[$i];

    return response()->json([
        'quiz_session'=>$quizSession,
        'question_with_choice'=>$questionChoice,
        'candidate_chosen_ans'=>$chosenAns
    ]);
    

这里的循环不起作用。那么如何解决这个问题?

【问题讨论】:

【参考方案1】:

您的 return 语句处于循环中,因此在第一次迭代时它会简单地打破循环并返回结果。相反,您应该这样做:

$questionChoice = [];
$chosenAns = [];

for($i=0;$i<$questionLimit;$i++)
    $questionChoice[]=$questions[$i];
    $chosenAns[]=$quizSessionAns[$i];


return response()->json([
            'quiz_session'=>$quizSession,
            'question_with_choice'=>$questionChoice,
            'candidate_chosen_ans'=>$chosenAns
        ]);

【讨论】:

以上是关于如何在 laravel json 文件中传递多个值?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel/Vue - 传递数据:Json 嵌套值作为字符串

如何将 Laravel 数据(json)传递给 Vue 组件

Laravel - 在列中的json / array中保存多个字段值

在 vuejs 和 Laravel 中传递上传文件照片的值

如何在 laravel 的单个控制器中传递多个路由

如何通过控制器将两个不同模型的值作为 Laravel 8 中的单个返回变量传递给视图文件