Laravel 5.6: 多对多关系 returns 空对象
Laravel 5.6: Many-to-many relationship returns empty object
我在 Laravel 5.6 模型中建立多对多关系,但是,由于我没有遵循 Laravel 的命名约定,我肯定在table/foreign 导致它不起作用的键名。
我的 table 与博客部分相关的文章都有一个 blog_
前缀:
blog_posts
收集所有 post 的信息(id
、title
、article
等)
blog_tags
定义可用于标记 post (id
, name
) 的标签
blog_posts_tags
是创建 post 和标签(id
、post_id
、tag_id
之间关系的枢轴 table
如前所述,我正在尝试在 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();
我哪里错了?
$post->tags()
returns 您将实例与查询生成器相关联。
如果要获取相关标签值,只需使用关系名称
示例:$tags = $post->tags;
foreach($tags as $tag){
var_dump($tag);
}
我在 Laravel 5.6 模型中建立多对多关系,但是,由于我没有遵循 Laravel 的命名约定,我肯定在table/foreign 导致它不起作用的键名。
我的 table 与博客部分相关的文章都有一个 blog_
前缀:
blog_posts
收集所有 post 的信息(id
、title
、article
等)blog_tags
定义可用于标记 post (id
,name
) 的标签
blog_posts_tags
是创建 post 和标签(id
、post_id
、tag_id
之间关系的枢轴 table
如前所述,我正在尝试在 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();
我哪里错了?
$post->tags()
returns 您将实例与查询生成器相关联。
如果要获取相关标签值,只需使用关系名称
示例:$tags = $post->tags;
foreach($tags as $tag){
var_dump($tag);
}