Php 雄辩的ORM(laravel):从与透视表关联的两个表中进行选择
我的数据库中有树表(Posts标记Post_标记(透视表)):Php 雄辩的ORM(laravel):从与透视表关联的两个表中进行选择,php,laravel,orm,laravel-5,eloquent,Php,Laravel,Orm,Laravel 5,Eloquent,我的数据库中有树表(Posts标记Post_标记(透视表)): 帖子(id、内容、标题等) 标签(id、标签名称) post_标签(id、post_id、tag_id) 现在我的问题是如何选择一篇文章中所有标签相同的文章,例如:选择所有标签与文章1相似的文章。 我已经创建了POST和tags表之间的关系: 在员额表中: public function tags(){ return $this->belongsToMany('App\Tag');} 在标签表中: p
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'));
}
}
public函数类似\u标记($id)
{
$post=\App\post::find($id);
$all_posts=\App\Post::where('id',''$id)->where('catg_id','=',$Post->catg_id);
$result=array();
如果(计数($post->tags)){
foreach($post->tags as$tag){
$all_posts=\App\Post::with('tags')->where('id','=',$id)->get();
foreach($post作为$post){
$result[]=$post->post\u id;
}
}
返回视图(“主视图”,压缩视图(“结果”);
;
}否则{
$fa=0;
返回视图(“主视图”,紧凑型(“fa”);
}
}
类似这样的内容:
$posts = Post::whereHas('tags', function($q) use ($tags)
{
$q->whereIn('id', $tags);//get $tags first .
})->get();
大概是这样的:
$posts = Post::whereHas('tags', function($q) use ($tags)
{
$q->whereIn('id', $tags);//get $tags first .
})->get();
你的意思是“使用多个标记获取帖子”?@Drudge获取具有相同标记的帖子不需要所有标记。你得到了吗?是的,但是你可以发布你尝试过的代码吗?你的意思是“使用多个标记获取帖子”?@Drudge获取具有相同标记的帖子不需要所有标记。你得到了吗?是的,但是你可以发布你尝试过的代码吗??