2017-01-16 133 views
0

我正在開發一個項目並使用Laravel 5.3,在訪問laravel關係時遇到了一些問題。
就像我已經設置了這些關係 -
在用戶模式 ​​-訪問laravel關係

public function likes() { 
    return $this->hasMany(Like::class, 'user_id'); 
} 

public function dislikes() { 
    return $this->hasMany(Dislike::class, 'user_id'); 
} 

public function posts() { 
    return $this->hasMany(Post::class); 
} 

public function comments() { 
    return $this->hasMany(Comment::class); 
} 

public function replies() { 
    return $this->belongsTo(Comment::class, 'parent_id'); 
} 

在帖子模態 -

public function likes() { 
    return $this->morphMany(Like::class,'likeable'); 
} 

public function dislikes() { 
    return $this->morphMany(Dislike::class, 'dislikeable'); 
} 

public function comments() { 
    return $this->hasMany(Comment::class); 
} 

public function user() { 
    return $this->belongsTo(User::class); 
} 

現在,這裏是我的問題。假設有一個用戶有10個帖子,每個人有20個喜歡和10個不喜歡,那麼我如何在他的帖子中顯示出喜歡和不喜歡的人與人之間的關係,我知道如何在每個帖子中查看喜歡和不喜歡的東西 -

$post->likes->count() 
$post->dislikes->count() 

我又可以訪問任何用戶所做的好惡,因爲我有方法上的用戶模式來訪問這些,我會做這樣的事情在我的模型

但我想以數字格式顯示總評論數,總評論數,回覆數,喜好和不喜歡數。 你能幫助我如何通過關係來訪問那些人嗎?

回答

0

簡單而簡單的答案是:反向工作。

Dislike::whereHas('posts', function($q) { 
    return $q->where('user_id', $this->id); 
}); 

現在,您將對所有帖子中的特定用戶產生所有不滿。

0

您可以使用with語句中使用雄辯的關係,如下面

在用戶控制器

User:: with(['posts'])->get(); //this with will fetch the user with all the posts and post likes/dislikes 

在用戶模型

public function posts() { 
     return $this->hasMany(Post::class)->with(['likes','dislikes']); //this will join likes and disliks based on the relation given in post model 
    } 

在樁模型

public function likes() { 
    return $this->hasMany(Like::class,'likeable'); //relation of post with likes 
    } 



public function dislikes() { 
    return $this->hasMany(Dislike::class, 'dislikeable'); //relation of post with dislikes 
    }