2017-02-07 6 views
-1

У меня есть one-to-one связь между Post и Category. Позвольте мне попытаться проиллюстрировать столбцы. Post columns:Laravel получение данных с использованием связей

| id | pr_name | pr_description | ..... | `category_id` 

А вот Category columns

| id | name 

Так что я пытаюсь сделать, это следующее. Категория уже определена мной и будет иметь только имена категорий. Я должен получить имя категории в моем файле Blade.php, используя его id: $post->category->name. Но я получаю ошибку: Trying to get property of non-object. Вот мои модели: Модель Post

class Post extends Model 
{ 
    public function category() 
    { 
     return $this->hasOne('App\Like','id','category_id'); // 'id' is foreign key, 
                  // 'category_id' is local key 
    } 
} 

Модель Категория:

class Category extends Model 
{ 
    public function post() 
    { 
     return $this->belongTo('App\Post'); 
    } 
} 
+0

Я думаю, что вы перепутали родителя и ребенка. Это отношение «один ко многим», потому что одна категория может иметь несколько сообщений. Это отражается в дизайне таблицы: у вас есть идентификатор категории в качестве внешнего ключа в таблице сообщений. – Shadow

+0

Я пробовал эти отношения. Но тогда как я могу получить название категории, используя пост. Я имею в виду: 'category -> $ post-> name' –

+0

Почему модель для' category' называется 'Like'? –

ответ

0

Изменено Like к category. И отношения, где КатегорияhasOne('App\Post') и сообщение модель belongsTo('App\Category')