【发布时间】:2016-06-11 10:27:08
【问题描述】:
我的数据库中有树表(帖子标签 Post_tag(数据透视表)):
- 帖子(ID、内容、标题、...)
- 标签(id,tag_name)
- post_tag(id,post_id,tag_id)
现在我的问题是如何选择具有相同标签的所有帖子到帖子中,例如:选择所有与帖子 1 具有相似标签的帖子。 我已经创建了帖子和标签表之间的关系: 在帖子表中:
public function tags(){
return $this->belongsToMany('App\Tag');}
在标签表中:
public function posts(){
return $this->belongsToMany('App\Post');}
我尝试了什么:
public function similar_tags($id)
{
$post = \App\Post::find($id);
$all_posts = \App\Post::where('id','<>',$id)->where('catg_id','=',$post->catg_id);
$result=array();
if(count($post->tags)){
foreach ($post->tags as $tag) {
$all_posts = \App\Post::with('tags')->where('id','=',$id)->get();
foreach ($all_posts as $post) {
$result[]=$post->post_id;
}
}
return view('home',compact('result'));
;
}else{
$fa=0;
return view('home',compact('fa'));
}
}
【问题讨论】:
-
你的意思是“获取带有多个标签的帖子”吗?
-
@Drudge 获取具有相同标签的帖子不需要所有标签你得到了吗?
-
是的,但是您可以发布您尝试过的代码吗??
标签: php laravel orm laravel-5 eloquent