2017-10-07 24 views
0

私はLumenを使用しています。モデルの関係を持つモデルです。私がしようとしているのは、すべてのカテゴリを取得し、各カテゴリが持つ投稿の数を数えることです。これはうまくいきます。しかし、私はそれがcreator_id == $current_user_idを数えることを望んでいません、どうすればいいですか?Eloquentどこにも関係がありません

これは私のPostクラスである:

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

public function category(){ 
     return $this->belongsTo(Category::class); 
} 

そして、これが私のCategoryクラスである:

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

そして、これが私のクエリです:

public function getCategories($user_id){ 
     $categories = Category::withCount('posts')->get(); 
     return new JsonResponse(['categories' => $categories]); 
} 

だから私はしないでください現在のユーザーが作成した投稿を数えたい。

ので、出力は次のようなものでなければなりません:この私も成功せずにしようとしたものを

{ 
    "categories": [ 
     { 
      "name": "All", 
      "posts_count": 0 
     }] 
} 

$categories = Category::where('creator_id', '!=', $user_id)->withCount('posts')->get(); 

答えて

1

は、次の行を使用してみてください:

$categories = Category::withCount(['posts' => function($query) use($user_id){ 
    $query->where('creator_id', '!=', $user_id); 
}])->get(); 
+0

ありがとうございました、それはうまくいった。しかし、このように使うのは安全ですか?私はLaracastのフォーラムの記事で、そのようにしてはならないことを知っていました。私が間違っているかもしれない、私がいれば私を修正してください。 –

+0

この方法を自由に使用してください。これは正しい方法です –

関連する問題