Пытаетесь получить свойство name из необъекта? - PullRequest
0 голосов
/ 07 октября 2019

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

Пытаюсь получить свойство 'name' не-объекта (0)

"Имя", которое я пытаюсь найти, - это название категории, к которой принадлежит мое образование.

Это модель моей категории

namespace App;

use Illuminate\Database\Eloquent\Model;

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");
       }
   protected $fillable =['name','price','durations','category_id'];
}

А вот моя страница просмотра, где я пытаюсь получить название категории

@foreach($formations as $formation)

        <td>{{$formation->name}}</td>
        <td>{{$formation->price}}</td>
        <td>{{$formation->category->name}}</td>
        td>{{$formation->durations}}</td>

@endforeach

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

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

Любое предложение о том, где я могу ошибаться? И заранее спасибо!

Ответы [ 4 ]

1 голос
/ 07 октября 2019

Эта ошибка обычно возникает, когда вы удалили одну или несколько строк из базы данных, но пытаетесь получить доступ к этой строке с помощью id. Убедитесь, что у вас есть все категории в таблице category с id, который указан в поле formation table category_id.

0 голосов
/ 07 октября 2019

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

0 голосов
/ 07 октября 2019

По вашему мнению

@foreach($formations as $formation)
 <td>{{$formation->name}}</td>
 <td>{{$formation->price}}</td>
 <td> {{ $formation->categories()->pluck('name')->implode(' ') }}</td>
 <td>{{$formation->durations}}</td>
@endforeach
0 голосов
/ 07 октября 2019

Попробуйте изменить отношение

class Formation extends Model
{
function category()
   {
       return $this->belongsTo('App\Category',"id","category_id"); //if your categories id is id
   }
protected $fillable =['name','price','durations','category_id'];
}

На ваш взгляд

  @foreach($formations as $formation)

    <td>{{$formation->name}}</td>
    <td>{{$formation->price}}</td>
    <td>{{$formation->category->name}}</td>
    <td>{{$formation->durations}}</td>

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