Я устанавливаю отношение «многие ко многим» в моделях Laravel 5.6, но, поскольку я не соблюдаю соглашение об именах Laravel, я, безусловно, допускаю ошибку в имени таблицы / внешнего ключа, из-за которой оно не работает.
Мои таблицы, связанные с разделом блога, имеют префикс blog_
:
blog_posts
собирает информацию обо всех сообщениях (id
, title
, article
и т. Д.)
blog_tags
определяет теги, которые можно использовать для отметки сообщения (id
, name
)
blog_posts_tags
- сводная таблица, которая создает отношения между записями и тегами (id
, post_id
, tag_id
)
Как уже было сказано, я пытаюсь установить отношения в Laravel:
Модель: BlogPost.php
/**
* The tags that belong to the post.
*/
public function tags()
{
return $this->belongsToMany('App\BlogTag', 'blog_posts_tags', 'post_id', 'tag_id');
}
Модель: BlogTag.php
/**
* The posts that belong to the tag.
*/
public function posts()
{
return $this->belongsToMany('App\BlogPost', 'blog_posts_tags', 'tag_id', 'post_id');
}
Проблема в том, что когда я вызываю tags()
метод, возвращаемый объект не имеет тегов внутри:
$post = BlogPost::find($id);
$tags = $post->tags();
Где я не прав?