2016-09-26 19 views
2

私はLaravelを新しくしており、次の問題を抱えています。 私はユーザーとグループとそれらを接続するためのテーブル用のテーブルを持っています。任意のユーザーが任意のグループに参加できる一般的なタスク。Laravel count Eloquent belongsToMany関連モデル

---------------------------------------------- 
| users  | groups  | user_groups | 
|--------------------------------------------| 
| id - int pk | id - pk | id - pk  | 
| name text | name  | user_id - fk | 
| email  |   | group_id - fk | 
| phone  |   | any_attr  | 
---------------------------------------------- 

私は、次のモデルがあります:

class User 
{ 
    ... 
    public function groups() 
    { 
     return $this->belongsToMany(Group::class, 'user_groups')->withPivot(['is_notification_requested']); 
    } 
    ... 
} 


class Group 
{ 
    ... 
    public function users() 
    { 
     return $this->belongsToMany(User::class, 'user_groups'); 
    } 
    ... 
} 

私はメンバーの数と、グループのすべてを取得するにはどうすればよいですか?私は、グループモデルとグループ内のユーザーの数が必要です。

+0

返されるオブジェクトの以前に計算された属性としてカウントする必要がありますか、値を印刷するときに計算することはできますか? – Laerte

+0

Laravel 5.2または5.3を使用していますか? – ollieread

+0

**ラエッテ:**まあ、それはいつも価値がありますか?私はちょうどグループのリストとグループのユーザーのカウントを1つずつ必要とします。そのページ分けされたリスト。 ** Ollieread:** Laravel 5.3 –

答えて

2

あなたはLaravel 5.3を使用している場合は、ここで記載されているように、あなたは、単にwithCount('relationship')を追加することができますが:https://laravel.com/docs/5.3/eloquent-relationships#counting-related-models

ここにあなたのコードを次の例です:

$groups = Group::withCount('users')->get(); 

今、あなたがこれを行うことができます:

foreach($groups as $group) { 
    echo $group->user_count 
} 
+0

私はこれについて知らなかった。これは確かに良い解決策です。 – Laerte

+0

新しい5.3機能です。 – ollieread

+0

両方とも正常です! :)しかし、私は** withCount **の方法を使用する必要がありますね。 ありがとうございました! –

関連する問題