【问题标题】:Find many columns values total in laravel blade Laravel 5.5在 laravel 刀片 Laravel 5.5 中查找多列值总计
【发布时间】:2017-09-26 16:18:29
【问题描述】:

我有一个名为“课程”的表。我想分别为从我的课程表中购买一门或多门课程的每个用户显示每门课程的“first_line”、“second_line”和“third_line”总分。 这是我的“课程”表-

我的输出是-

我在控制器中尝试了类似下面的操作,但我无法将“$totalPoints”变量传递给刀片以显示总点数,我认为这是错误的方法。我应该怎么做才能得到正确的结果?请有人帮助我-

public function showCourses(){
            if ($user_name = Sentinel::getUser()->user_name) {
                    $mycourses = DB::table('users')
                    ->join('buy_courses', 'users.user_name', '=', 'buy_courses.user_name')
                    ->join('courses', 'courses.course_name', '=', 'buy_courses.course_name')
                    ->select('buy_courses.course_name','courses.amount','courses.first_line','courses.second_line','courses.third_line','buy_courses.user_name')
                    ->where('users.user_name', $user_name)
                    ->get();
                //total points for affiliates
                $line_points = DB::table('courses')
                                ->select('first_line','second_line','third_line')
                                ->first();

                $totalPoints = $line_points->first_line + $line_points->second_line + $line_points->third_line;

            }

           //dd($totalPoints);

            return view('courses.show',['mycourses' => $mycourses],['totalPoints' => $totalPoints]);
        }

【问题讨论】:

  • 首先它只为您提供表中第一条记录的总点数,您可以使用“紧凑”将多个值发送到您的视图
  • @md Rashedul 不要忘记为正确答案投票 :)
  • 我已经做到了。@kunal

标签: php mysql laravel


【解决方案1】:

这很简单。您可以在控制器中获取所有课程后尝试此操作:-

public function showCourses(){
        if ($user_name = Sentinel::getUser()->user_name) {
                $mycourses = DB::table('users')
                ->join('buy_courses', 'users.user_name', '=', 'buy_courses.user_name')
                ->join('courses', 'courses.course_name', '=', 'buy_courses.course_name')
                ->select('buy_courses.course_name','courses.amount','courses.first_line','courses.second_line','courses.third_line','buy_courses.user_name')
                ->where('users.user_name', $user_name)
                ->get();
            foreach($mycourses as $key => $getcourse){
                $mycourses[$key]->total_points = $getcourse->first_line + $getcourse->second_line + $getcourse->third_line;
            }

        return view('courses.show',['mycourses' => $mycourses]);
    }

现在您无需单独传递总积分。现在总分已添加到 mycourses 键中。当您像这样在刀片中打印时-

@foreach($mycourses as $course)
   Course Name : {{$course->course_name}}
   First Line : {{$course->first_line}}
   Second Line : {{$course->second_line}}
   Third Line : {{$course->third_line}}
   Course Fee : {{$course->amount}}
   All Total Points : {{$course->total_points}}
@endforeach

希望对你有帮助!

【讨论】:

    【解决方案2】:

    我认为问题出在这里:

    return view('courses.show',['mycourses' => $mycourses],['totalPoints' => $totalPoints]);
    

    这里,第二个参数是一个数组。但是在您的情况下,您已经传递了多个数组,这是错误的。所以改成:

    return view('courses.show',['mycourses' => $mycourses, 'totalPoints' => $totalPoints]);
    

    【讨论】:

    • 现在我的每门课程都得到相同的总分,导致 $line_points 查询 first(),获取单个课程总分的正确查询应该是什么?
    【解决方案3】:

    如果要将多个变量传递给视图,请在 with() 中使用 compact。像这样的

    $mycourses = something;
    $totalPoints = something;
    
    return view('courses.show')->with(compact('mycourses','totalPoints'));
    

    编辑答案如下

    如果你想对列求和。你可以使用 sum()。

    我建议你开始使用能简化工作的雄辩关系。

    为课程创建一个模型并执行类似的操作。

    $total_first_line = Course::sum('first_line');
    

    【讨论】:

    • 谢谢,现在我得到了所有课程的第一总分,我认为对于 $line_points 查询使用 first(),但我想获得每个课程个人的总分,应该是什么查询?
    【解决方案4】:

    您的代码下面的这一行:

    $line_points=DB::table('courses')->select('first_line','second_line','third_line')->first();

    总是会返回表格的第一行,如果你想获取所有记录,你应该这样做

    $courses = DB::table('courses')->get();

    然后您可以在视图中计算每门课程的总分,如下所示:

    @foreach($courses as $course)
        Course Name : {{$course->course_name}}
        First Line : {{$course->first_line}}
        Second Line : {{$course->second_line}}
        Third Line : {{$course->third_line}}
    
        Course Fee : {{$course->amount}}
    
        Total Points : {{$course->first_line + $course->second_line + $course->third_line}}
    @endforeach
    

    类似的,希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2019-07-29
      • 1970-01-01
      • 2018-06-07
      • 2019-07-29
      • 2021-05-16
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      相关资源
      最近更新 更多