繁体   English   中英

与 Laravel 的多对多关系

[英]Many to Many relationship with Laravel

我有以下表格:

帖子{id, title, description}

标签{id, name, description}

post_tags {post_id, tag_id}

在 Laravel 中,我建立了如下关系。 我不确定如何查询我的 post_tags 数据透视表。 我收到以下错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dev_match.post_tag' doesn't exist (SQL: select `tags`.*, `post_tag`.`post_id` as `pivot_post_id`, `post_tag`.`tag_id` as `pivot_tag_id` from `tags` inner join `post_tag` on `tags`.`id` = `post_tag`.`tag_id` where `post_tag`.`post_id` = 1)

家庭控制器:

  public function getindex(){


          $post = Post::all();
         return view('welcome', compact('post'));

       }

家庭视图:

@foreach($post as $posts)

    <tbody>
        <tr>
        <td> <a href="">{{$posts->tags->name}}</a> </td>
        <td>  </td>
        <td> asked </td>
      </tr>
    </tbody>


    @endforeach

标签型号:

  public function post()
{
   return $this->belongsToMany('App\Post');
}

岗位型号:

    public function tag()
 {
     return $this->belongsToMany('App\Tag');
 }

您不需要为数据透视表添加模型(但您可以),而且您不需要向数据透视表添加id

你的关系没问题,但如果你想使用id ,你应该将withPivot('id')到关系中

public function post()
{
    return $this->belongsToMany('App\Post')->withPivot('id');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM