【发布时间】:2018-09-11 16:20:51
【问题描述】:
我在 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();
我哪里错了?
【问题讨论】:
标签: php database laravel many-to-many laravel-5.6