2016-03-23 8 views
0

Jungs versuchen, die Anzahl der Benutzer in bestimmten Gruppen zu zeigen. Ich versuche es mit Assoziationen, aber nicht funktioniert. In Liste, wo ich Listing user groups möchte ich number_users_in_groupCakePHP 3 zählen, wie viele Benutzer in Gruppe

Ich habe zwei Tabellen:

1. Users und zweiten User groups

Tabelle Benutzer:

id group_id status username  password 

Benutzergruppen Tabelle:

Um alle Gruppen zu zeigen, ich benutze diese Methode:

/** 
* Index method 
* 
* @return \Cake\Network\Response|null 
*/ 
public function index() 
{ 
    $usersGroup = $this->paginate($this->UsersGroup); 

    $this->set(compact('usersGroup')); 
    $this->set('_serialize', ['usersGroup']); 
} 

Und in index.cp ich diese Ergebnisse foreach. Also in diesem Ergebnis möchte ich Nummer hinzufügen für jede Gruppe, wie viel Benutzer in der Gruppe ist ..

Beispiel:

  1. Administrator (5) < --- 5 Benutzer in administarator Gruppe
  2. Moderator (3)

Wie geht das?

+0

„_doesn't work_ "ist keine richtige Problembeschreibung! Bitte zeigen Sie immer, was Sie getan haben, und geben Sie genauer an, was _exactly_ passiert und was Sie stattdessen erwarten würden. Zeigen Sie auch Ihre Debugging-Versuche. – ndm

Antwort

1

verwenden, um die associations

public function index() 
    { 
     $usersGroups = $this->UsersGroup->find('all',['contain'=>['Users']]); 

     $this->set('userGroups',$this->paginate($usersGroups)); 
     $this->set('_serialize', ['usersGroups']); 
    }; 

hierfür müssen Sie den Verein in Modell Benutzergruppe

$this->hasMany('Users', [ 
      'foreignKey' => 'group_id' 
     ]); 

erklären und jetzt können Sie count in Sicht Schleife

foreach ($userGroups as $group) 
echo count($group->users); 
+1

A ** [Zähler-Cache] (http://book.cakephp.org/3.0/en/orm/behaviors/counter-cache.html) ** wird wahrscheinlich effizienter sein. – ndm

+0

@Mazba seine Arbeit danke. @ndm auch ty ich werde 'counter cache' versuchen, klingt gut – Ivan