dongyi6183 2017-06-04 20:11
浏览 47
已采纳

我尝试发布到数据库时出错。 我正在尝试计算GPA

I am getting this error "ErrorException in scoresheetController.php line 259: Object of class Illuminate\Database\Eloquent\Collection could not be converted to int" when I want to post the following into the database. Kindly find the code below.

 <?php

    namespace App\Http\Controllers;


    use App\Http\Requests\scoresheetRequest;
    use App\Scoresheet;
    use App\StudentCourse;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Input;
    use DB;
    use Excel;
    use Illuminate\Database\Eloquent\Collection;

    class scoresheetController extends Controller
    {
        /**
         * Create a new controller instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->middleware('auth');
        }

        /**
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {
            $scoresheet = Scoresheet::select('id', 'code', 'stud_id', 'term', 'year', 'CA_Score', 'exam_score', 'total', 'grade')->get();


            return view('admin.results')->with('scoresheet', $scoresheet);
        }

        /**
         * Show the form for creating a new resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function create()
        {
            //
        }

        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
        public function store(scoresheetRequest $request)
        {
            //dd($request ->all());

            $scoresheet = new Scoresheet();

            $crdthr = StudentCourse::select('student_courses')
                                    ->join('scoresheets', 'student_courses.stud_id', '=', 'scoresheets.stud_id')
                                    ->select('student_courses.credit_hrs')
                                    ->get();

            //Calculate total
            $total  = $request['CA_Score'] + $request['exam_score'];

            //Calculate the grade
            switch ($grade = $total) {
                case $total >=93 && $total==100:
                   $grade =  "A+";
                    break;
                case $total>=85:
                    $grade = "A";
                    break;
                case $total >=77:
                    $grade = "B+";
                    break;
                case $total >=70:
                    $grade = "B";
                    break;
                case $total >=60:
                    $grade = "C";
                    break;
                case $total >=55:
                    $grade = "D+";
                    break;
                case $total >=50:
                    $grade = "D";
                    break;
                case $total <50:
                    $grade = "F";
                    break;
            }

            //Check for grade equivalent
            switch ($digit = $grade) {
                case $grade == "A+":
                    $digit =  "4.00";
                    break;
                case $grade == "A":
                    $digit =  "3.75";
                    break;
                case $grade == "B+":
                    $digit =  "3.50";
                    break;
                case $grade == "B":
                    $digit =  "3.00";
                    break;
                case $grade == "C+":
                    $digit =  "2.50";
                    break;
                case $grade == "C":
                    $digit =  "2.00";
                    break;
                case $grade == "D+":
                    $digit =  "1.50";
                    break;
                case $grade == "D":
                    $digit =  "1.00";
                    break;
                case $grade == "F":
                    $digit =  "0.00";
                    break;
            }

            //Calculate mini wgt
            $gpa = $digit * $crdthr;

            $scoresheet->code = $request['code'];
            $scoresheet->stud_id = $request['stud_id'];
            $scoresheet->term = $request['term'];
            $scoresheet->year = $request['year'];
            $scoresheet->CA_Score = $request['CA_Score'];
            $scoresheet->exam_score = $request['exam_score'];
            $scoresheet->total = $total;
            $scoresheet->grade = $grade;
            $scoresheet->grade_digit = $digit;
            $scoresheet->mini_wgt = $gpa;

            //dd($gpa);
            if ($scoresheet->save()){
                flash($request['name'].' successfully saved.')->success();
                /*echo 'saved';*/
            }else{
                flash($request['name'].' not saved.')->error();
                /*echo 'Not saved';*/
            }

            return redirect()->back();
        }

        /**
         * Display the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function show($id)
        {
            //
        }

        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function edit($id)
        {
            $scoresheet =Scoresheet::findOrFail($id);

            return view('admin.result_edit') ->with('scoresheet', $scoresheet);
        }

        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request, $id)
        {
            $scoresheet = Scoresheet::findOrFail($id);


            $crdthr = StudentCourse::select('student_courses')
                ->join('scoresheets', 'student_courses.stud_id', '=', 'scoresheets.stud_id')
                ->select('student_courses.credit_hrs')
                ->get();

            $total = $request['CA_Score'] + $request['exam_score'];

            //Calculate the grade
            switch ($grade = $total) {
                case $total >=93 && $total==100:
                    $grade =  "A+";
                    break;
                case $total>=85:
                    $grade = "A";
                    break;
                case $total >=77:
                    $grade = "B+";
                    break;
                case $total >=70:
                    $grade = "B";
                    break;
                case $total >=60:
                    $grade = "C";
                    break;
                case $total >=55:
                    $grade = "D+";
                    break;
                case $total >=50:
                    $grade = "D";
                    break;
                case $total <50:
                    $grade = "F";
                    break;
            }

            //Check for grade equivalent
            switch ($digit = $grade) {
                case $grade == "A+":
                    $digit =  "4.00";
                    break;
                case $grade == "A":
                    $digit =  "3.75";
                    break;
                case $grade == "B+":
                    $digit =  "3.50";
                    break;
                case $grade == "B":
                    $digit =  "3.00";
                    break;
                case $grade == "C+":
                    $digit =  "2.50";
                    break;
                case $grade == "C":
                    $digit =  "2.00";
                    break;
                case $grade == "D+":
                    $digit =  "1.50";
                    break;
                case $grade == "D":
                    $digit =  "1.00";
                    break;
                case $grade == "F":
                    $digit =  "0.00";
                    break;
            }


            //Calculate mini wgt
            $gpa = $digit * $crdthr;

            $scoresheet->code = $request['code'];
            $scoresheet->stud_id = $request['stud_id'];
            $scoresheet->term = $request['term'];
            $scoresheet->year = $request['year'];
            $scoresheet->CA_Score = $request['CA_Score'];
            $scoresheet->exam_score = $request['exam_score'];
            $scoresheet->total = $total;
            $scoresheet->grade = $grade;
            $scoresheet->grade_digit = $digit;
            $scoresheet->mini_wgt = $gpa;

            if ($scoresheet->save()){
                flash($request['name'].' successfully saved.')->success();
                /*echo 'saved';*/
            }else{
                flash($request['name'].' not saved.')->error();
                /*echo 'Not saved';*/
            }

            return redirect() ->to('/scoresheet');
        }

        /**
         * Remove the specified resource from storage.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function destroy($id)
        {
            $scoresheet = Scoresheet::findOrFail($id);

            if (Scoresheet::destroy($id)){
                flash ('deleted successfully')->success();
            }else{
                flash ('failed to delete')->warning();
            }

            return redirect()->back();
        }

    }

I would be glad if assistance can be given as soon as possible.

  • 写回答

2条回答 默认 最新

  • douxiaomang5640 2017-06-04 23:01
    关注

    Since $crdthr is a Collection object, you can print it to see the data format in there. Usually, you can get the data you are looking for as $crdthr[0]-> credit_hrs

    $gpa = $digit * $crdthr[0]->credit_hrs;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置