Laravel与我的系统一对多关系

时间:2020-02-01 22:22:21

标签: php laravel

我想基于系统中的一家酒店输出所有评论。目前,我有一个显示所有酒店所有评论的系统。我有以下代码

PostsController:

public function show($id)
 {
   $post = Post::find($id);
   $review = Review::all();
   return view('posts.show', compact('post', 'review')); 
 }

Posts.php:

    protected $tables='posts';
    function review()
      {
        return $this->hasMany('App\Review');
      }
     }

Review.php:

     protected $tables='reviews';
     function post()
       {
         return $this->hasMany('App\Post', 'posts_title', 'title');
       }

我想为合适的酒店返回匹配的评论。我想返回posts_title(posts表中的主列)并返回title(reviews表中的列)。

1 个答案:

答案 0 :(得分:0)

根据Posts.php模型中的post函数检查文件Review的名称,它必须为Post.php。我不知道您的数据库结构是什么样子,但是如果您将Laravel的{​​{1}}最佳实践idprimary key的{​​{1}}使用post_id会更好我认为这种关系应该是一对多的,这意味着一个帖子有很多这样的评论: foreign key

Post.php

public function reviews(){ return $this->hasMany('App\Review'); }

Review.php

然后您可以像使用它

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

要获取更多信息,您可以访问https://laravel.com/docs/6.x/eloquent-relationships#one-to-many