ErrorException Undefined property stdClass :: $ Start

Eric kioko спросил: 13 июня 2018 в 05:30 в: laravel

Я столкнулся с ошибкой при извлечении данных из таблицы goals. Я пытаюсь показать все данные таблиц с помощью цикла foreach. Но я не могу из-за неизвестной ошибки свойства. Я до сих пор изучаю laravel так любезно. Это мой код контроллера.

namespace App\Http\Controllers;use Illuminate\Http\Request;
use App\goal;
use DB;class GoalController extends Controller
{
    public function postAddGoal(Request $request){
        $this->validate($request, [
            'goal'=>'required',
            'checklist'=>'required'
        ]);
        $goal_name=$request['goal'];
        $checklist=$request['checklist'];        $goal = new goal();
        $goal->goal=$goal_name;
        $goal->checklist=$checklist;
        $goal->status='PENDING';
        $goal->start='1002-1-1';
        $goal->finish='1002-1-1';
        $goal->remarks="NULL";
        $goal->score="0";
        $goal->save();        redirect()->route('seegoals');
    }    public function getGoals(){
        $goals = DB::select(' select * from goals ');
        if(empty($goals)){
            $goals=0;
        }
        return view('/index', ['goals'=>$goals] );
    }
}

Затем мой код index.blade.php

@foreach($goals as $goal)
<tr>    <th colspan="3">{{ $goal->goal }}</th>
    <th colspan="7">{{$goal->checklist}}</th>
    <th colspan="2">{{$goal->status}}</th>
    <th colspan="2">{{$goal->Start}}</th>
    <th colspan="2">{{$goal->finish}}</th>
    <th colspan="2">{{$goal->score}}</th>
    <th colspan="7">{{$goal->remarks}}</th></tr>
@endforeach

Я получаю исключение:

(2/2) ErrorException Неопределенное свойство: stdClass :: $ Start (View: /opt/lampp/htdocs/ToDo/resources/views/index.blade. php)

В чем может быть проблема с моим кодом?

1 ответ

Davit ответил: 13 июня 2018 в 06:10

Введенная в заблуждение первая буква. Измените Start на start

<th colspan="2">{{$goal->start}}</th>

И для хорошей практики в коде изменения контроллера на

$goals = DB::select('select `checklist`, `status`, `start`, `finish`, `score`, `remarks` from goals');

Вы должны получить в db только необходимую информацию
также удалить эту часть

if (empty($goals)) {
    $goals = 0;
}

Чтобы не получить ошибку, когда цели пустые

Eric kioko ответил: 13 июня 2018 в 05:36
Спасибо человеку, я не могу поверить, что это было простое решение.
Bak87 ответил: 13 июня 2018 в 05:41
@Erickioko Помните, что при использовании построителя запросов это не то же самое с использованием Eloquent, с Eloquent, что $goal->Start покажет вам null (пустая строка) из-за свойств dinamyc. Таким образом $goals = DB::select(' select * from goals '); можно выполнить с помощью Eloquent Like $goals = goal::all();
Davit ответил: 13 июня 2018 в 05:37
Попробуйте и спросите результат.
Eric kioko ответил: 13 июня 2018 в 05:47
Спасибо @ Bak87 Я не привык к красноречивому, но я учусь.
Eric kioko ответил: 13 июня 2018 в 05:49
@ Давит, он уже работал, как только я сменил S на s.

Дополнительное видео по вопросу: ErrorException Undefined property stdClass :: $ Start

Undefined Property codeigniter stdClass

Solution for Notice: Undefined variable: in index.php on line | PHP Tutorials

Déboguer son code PHP (5/6) : Trying to get property of non-object