У меня есть 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');
}
}
Я думаю, что вы перепутали родителя и ребенка. Это отношение «один ко многим», потому что одна категория может иметь несколько сообщений. Это отражается в дизайне таблицы: у вас есть идентификатор категории в качестве внешнего ключа в таблице сообщений. – Shadow
Я пробовал эти отношения. Но тогда как я могу получить название категории, используя пост. Я имею в виду: 'category -> $ post-> name' –
Почему модель для' category' называется 'Like'? –