Отношения в laravel Неопределенное свойство: stdClass :: error - PullRequest
1 голос
/ 29 сентября 2019

Привет Я новичок в отношениях laravel и eloquent Я получаю эту ошибку, когда пытаюсь отобразить имя категории формации

Неопределенное свойство: stdClass :: $категория (представление: E: \ khibra-platfrom \ resources \ views \ creation \ index.blade.php)

Вот моя модель категории

class Category extends Model
{
    function formations()
        {
            return $this->hasMany('App\Formation');
        }

    protected $fillable =['name','description'];
} 

И моя модель формирования

class Formation extends Model
{
    function category()
        {
            return $this->belongsTo('App\Category',"category_id");
        }
}

Я пытаюсь получить название категории для каждого формирования, как это

 @foreach($formations as $formation)

          <tr>
            <th scope="row">{{$formation->id}}</th>
            <td>{{$formation->name}}</td>
            <td>{{$formation->price}}</td>
            <td>{{$formation->category->name}}</td>
            <td>{{$formation->durations}}</td>
            <td><div class="row">
          </tr>
    @endforeach

Это мой код контроллера

    {
        //$formations = Formation::all();
        $formations = DB::table('formations')->paginate('4');
        $categories = Category::all();
        return view('formation.index',compact('categories','formations'));
    }

Может любойПомогите ?

1 Ответ

0 голосов
/ 29 сентября 2019

Вы используете DB фасад не красноречивая модель

$formations = DB::table('formations')->paginate('4');

Измените это значение на

Formation::with('category')->paginate(4); 

также в редактировании модели, как это

class Formation extends Model 
{
    public function category()
    {
        return $this->belongsTo('App\Category',"category_id");
    }
}

вИзмените код лезвия на

<td>{{$formation->category->name ?? ''}}</td> 

Во избежание исключения ошибки, когда один formation не имеет category

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...