在laravel blade Laravel 5.5中找到许多列值

时间:2017-09-26 06:46:29

标签: php mysql laravel

我有一个名为'courses'的表。我想为每个从我的课程表中购买一门或多门课程的用户单独显示每个课程的'first_line','second_line'和'third_line'积分。 这是我的“课程”表 - courses

我的输出是 -

1 2

我在我的控制器中尝试过像bellow这样的东西,但是我无法将'$ totalPoints'变量传递给blade以显示总点数,我认为这是错误的方法。我该怎么做才能得到正确的结果?请有人帮助我 -

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]);
        }

4 个答案:

答案 0 :(得分: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

希望它有所帮助!

答案 1 :(得分:0)

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

$mycourses = something;
$totalPoints = something;

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

以下编辑回答

如果要对列进行求和。你可以使用sum()。

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

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

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

答案 2 :(得分:0)

我认为问题在于:

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

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

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

答案 3 :(得分:0)

以下代码中的代码:

$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

这样的事情,希望它有所帮助