【问题标题】:Laravel 5.6: Many-to-many relationship returns empty objectLaravel 5.6:多对多关系返回空对象
【发布时间】:2018-09-11 16:20:51
【问题描述】:

我在 Laravel 5.6 模型中建立了多对多关系,但是,由于我没有遵循 Laravel 的命名约定,我肯定在表/外键名称上犯了一个错误,导致它无法正常工作。

我与博客部分相关的表格都有一个blog_ 前缀:

  1. blog_posts 收集所有帖子信息(idtitlearticle 等)
  2. blog_tags 定义了可用于标记帖子的标签(idname
  3. blog_posts_tags 是创建帖子和标签之间关系的数据透视表(idpost_idtag_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


    【解决方案1】:

    $post->tags() 使用查询生成器返回您的相关实例。

    如果要获取相关标签值,只需使用关系名称

    示例:$tags = $post->tags;

    foreach($tags as $tag){
       var_dump($tag);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2019-06-22
      • 2018-11-14
      • 2012-11-26
      • 2019-07-24
      • 2019-10-01
      相关资源
      最近更新 更多