【问题标题】:Showing the data in the correct format within the view在视图中以正确的格式显示数据
【发布时间】:2017-09-20 08:12:54
【问题描述】:

用户可以填写一个表单,该表单基于多个问题,每个问题有 6 个与之关联的字段。

表单信息存储在数据库中,例如:

id / audit_id / question_id / score
1003    33          97      3
1004    33          97      0   
1005    33          97      2   
1006    33          97      0   
1007    33          97      2   
1008    33          97      0   
1009    33          98      3   
1010    33          98      1   
1011    33          98      3   
1012    33          98      1   
1013    33          98      3   
1014    33          98      0       

所以在上面的例子中,审计 33 有 question_id 97 和 98,每个有 6 个答案。

获取信息的控制器函数:

Audit::where('audit_id', $auditScore->id)
    ->with('rquestion')
    ->with('rquestion.auditQuestion')
    ->get();

返回数组中的每个问题:

Collection {#486 ▼
  #items: array:78 [▼
    0 => Audit {#490 ▶}
    1 => Audit {#491 ▶}
    2 => Audit {#492 ▶}
    3 => Audit {#493 ▶}
    4 => Audit {#494 ▶}
    5 => Audit {#495 ▶}
    6 => Audit {#496 ▶}
    7 => Audit {#497 ▶}
    8 => Audit {#498 ▶}
    9 => Audit {#499 ▶}

我面临的问题是我想遍历数据,向用户显示以下内容:

一个问题及其 6 个答案,然后是下一个问题及其 6 答案

但是因为每个“问题行”都是单独返回的,所以我有一个问题和分数。所以对于我展示的每一个分数,它都有问题!

每个问题总是有 6 个答案,所以我的想法是以某种方式打印第一个分数的问题,然后自己打印剩下的 5 个分数?

我不确定如何实现这一点。如何获得每个question_id 的所有 6 个分数?也许,每个question_id 都包含一个包含 6 个分数的数组?

非常感谢,

【问题讨论】:

    标签: laravel blade laravel-5.4 laravel-blade


    【解决方案1】:

    您可以简单地将它们按question_id 分组。
    假设 $auditList 包含您的审核列表:

    $groupedQuestions = [];
    foreach ($auditList as $singleAudit)
    {
        $groupedQuestions[$singleAudit->question_id][] = $singleAudit;
    }
    

    然后,你会有一个这样的数组

    array:2 [▼
      97 => array:3 [▼
        0 => Audit {#160 ▶}
        1 => Audit {#159 ▶}
        2 => Audit {#163 ▶}
      ]
      98 => array:1 [▼
        0 => Audit {#164 ▶}
        ...
      ]
      ...
    ]
    

    如果你愿意,你可以稍微修改一下代码,将问题文本移动到“upper”数组中,这样通过blade获取它会更容易

        foreach ($auditList as $singleAudit)
        {
            $groupedQuestions[$singleAudit->question_id]['question'] = $singleAudit->getQuestionText(); // assuming that you have a similar method on your entities
            $groupedQuestions[$singleAudit->question_id]['answers'][] = $singleAudit;
        }
    

    您的结果数组将与此类似

    array:2 [▼
      97 => array:2 [▼
        "question" => "This is the question text"
        "answers" => array:3 [▼
          0 => Audit {#160 ▶}
          1 => Audit {#159 ▶}
          2 => Audit {#163 ▶}
        ]
      ]
      98 => array:2 [▼
        "question" => "This is the question text"
        "answers" => array:1 [▼
          0 => Audit {#164 ▶}
        ]
      ]
    ]
    

    通过刀片获取将是这样的

    @foreach($questions as $question)
    The question is: {{$question['question']}}    <br />
    Answers are: <br />
        @foreach($question['answers'] as $answer)
            {{$answer->id}} <br />
        @endforeach
    @endforeach
    

    打印

    问题是:这是问题文本
    答案是:
    1033
    1034
    1035
    ...
    问题是:这是问题文本
    答案是:
    1035
    ...

    【讨论】:

    • 帮助很大!并进行了彻底的解释。我设法通过使用与模型关联的关系来获取问题名称。谢谢 LombaX!
    猜你喜欢
    • 2017-01-03
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多