我想基于系统中的一家酒店输出所有评论。目前,我有一个显示所有酒店所有评论的系统。我有以下代码
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表中的列)。
答案 0 :(得分:0)
根据Posts.php
模型中的post
函数检查文件Review
的名称,它必须为Post.php
。我不知道您的数据库结构是什么样子,但是如果您将Laravel
的{{1}}最佳实践id
和primary 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