当前位置: 首页 > 知识库问答 >
问题:

在循环中运行Elecoquent,并基于另一个Elecoquent查询的结果在blade中显示列表

束志业
2023-03-14

我有一个查询来获取学生列表,我正在使用foreach循环来迭代并获取每个学生的student_id。

在foreach循环中,我有另一个计算学生分数的查询。在计算学生分数时,我需要来自第一个查询的student_id

逻辑

$students = DB::table('grades_students')
  ->join('users', 'grades_students.student_id', '=', 'users.id')
  ->join('grades', 'grades_students.grade_id', '=', 'grades.id')
  ->where('grades.stream_id', $request->stream_name)
  ->get()->pluck('student_id');


  foreach ($students as $student ) {

    $student_average=DB::select(DB::raw("select student_id,  round((SUM(t.mark))/'5') average_mark from (
        select marks.student_id,  ROUND(AVG(mark)) as mark  from marks
            INNER JOIN teaching_loads ON teaching_loads.id=marks.teaching_load_id
            INNER JOIN subjects ON subjects.id=teaching_loads.subject_id
        where marks.student_id = '$student' AND marks.assessement_id=1  
        GROUP BY subject_id
      )t "));

}
return view('analytics.view-test', compact('student_average'));   



现在的问题是,在blade中只出现了一个学生,而我需要显示一个在学生查询中的所有学生的列表。

共有1个答案

魏安宁
2023-03-14

您将覆盖$student_avere每个循环,因此只有最后一个循环的内容存储在$student_avere中。您需要改用数组。

$student_averages = [];
foreach ($students as $student) {
    $student_averages[] = DB::select(...your query);
}
return view('analytics.view-test', compact('student_averages'));

然后,您将有所有的学生平均可用,并可以循环通过他们在您的视图。

 类似资料:
  • 我正在尝试对从刀片模板中的控制器中的查询返回的数据数组运行foreach循环。无论我如何尝试,我总是会收到一个错误,说“Undefined offset:1”。如果我只是简单地打印出,它会显示我所期望的,但由于某种原因,它没有foreach循环。 下面是我从日志中的查询中得到的一个打印输出(实际数组显然有更多的值): 我一直在尝试不同的方法,因为这是我最终要实现的目标: 我希望这是一件简单的事情,

  • 我正在CodeIgniter上开发一个测验应用程序。 随机从数据库中挑选25个问题并显示给用户。 以下是我的代码: 我想在一个div上显示前10个结果。 当用户单击下一个按钮时,它会显示下一个10个结果。 (隐藏当前div并显示下一个) 我只想知道我如何打破结果,并限制每个分区10个问题。

  • 我有一张产品表。我需要展示所有的产品。我在不同的条件下获取结果。 我需要像这样展示结果 所有结果都应以分页方式显示。如果我先得到结果就可以了。但是如果我使用分页链接,所有条件数据都将丢失,查询将不带任何条件地获取结果。我如何处理这种情况。请我不需要代码,我需要提示和建议。另一件事是我正在使用Codeigniter的分页类。 编辑过 这是我正在使用的模型方法

  • 问题内容: 当photoId直接在语句上而不是变量时,以下代码完全没有问题。 但是以下内容将无法正常运行,这可能是导致未选择该内容的原因。 这是在while循环内。 谢谢。 问题答案: 在php a和a中有很大的不同,查询语法在查询周围是双引号,在变量周围是单引号。。尽管我建议您在查询中使用参数,而不是直接将变量直接放入查询中 根据我的建议,您应该将查询更改为此: 这只是它的基本要点…如果您想了解

  • 我正在尝试查找一个查询唯一的名称列表,并排除两个查询结果之间的共同名称。例如,我想要学生A、B和C所选课程的名称,并从该列表中排除学生D和E所选的课程。在这个问题的答案的帮助下(Neo4j Cypher:从结果中排除某些节点),我尝试了这个密码代码,它是有效的,但我得到的结果是节点。我希望它是一个名称列表,而不是节点。 非常感谢。

  • 问题内容: 第二行应从第一行减去…并在第二表中显示结果 第一张table 最初第二张表是空的 我在第二张table中到底需要什么如下 问题答案: Insert into Table2(stock_name,temple,quantity) SELECT a.stock_name, a.temple, SUM(Case when Type=’purchase’ then quantity else