簡體   English   中英

雄辯的ORM(laravel):從與數據透視表關聯的兩個表中進行選擇

[英]eloquent ORM (laravel): select from two tables associated with pivot table

我的數據庫中有樹表(帖子標簽Post_tag(數據透視表)):

  1. 帖子(編號,內容,標題,...)
  2. 標簽(ID,TAG_NAME)
  3. 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'));
        }
    }

像這樣的東西:

  $posts = Post::whereHas('tags', function($q) use ($tags)
{
    $q->whereIn('id', $tags);//get $tags first .
})->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM