it-swarm.com.de

Wie kann ich Benutzer aus einer bestimmten Benutzergruppe abfragen?

Ich möchte nur die Benutzer mit einem group_id Wert von 10.

Warum funktioniert die folgende Abfrage nicht?

$db    = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('a.id, a.name, a.username, b.group_id')           
      ->from ('#__users a')    
      ->join ('INNER', '#__user_usergroup_map b')
      ->where('b.group_id=10')  
      ->where('a.block=0')        
      ->order($order); 

$db->setQuery($query);
return $db->loadObjectList();
1
dline

Ihre Frage wäre vollständiger, wenn Sie angeben würden, warum sie nicht "funktioniert".

Ich sehe nichts falsches an den WHERE-Klauseldeklarationen (weil der Standardkleber AND ist).

Was mir auffällt, ist die Tatsache, dass Sie nicht die Spalten ausdrücken, die zum VERBINDEN der beiden Tabellen verwendet werden sollen. Dies wird mit dem Schlüsselwort ON innerhalb der Methode join() geschrieben.

Basierend auf https://docs.joomla.org/Tables/user_usergroup_map

Ich würde sagen, Sie wollen so mitmachen:

->innerJoin("#__user_usergroup_map b ON a.id = b.user_id")

Im Allgemeinen empfehle ich, wenn eine Abfrage in Ihrer Joomla-Umgebung nicht wie erwartet funktioniert, $query->dump() Ihre Abfrage an phpMyAdmin zu übertragen und zu sehen, was passiert.

Hier sind einige meiner verwandten Beiträge, die sich als aufschlussreich erweisen können:

1
mickmackusa