web-dev-qa-db-ja.com

特定のユーザーグループのユーザーを照会する方法は?

group_id値が10のユーザーのみを一覧表示します。

次のクエリが機能しないのはなぜですか?

$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

なぜ「うまくいかない」のかを述べれば、質問はより完全になります。

WHERE句の宣言に問題はありません(デフォルトの接着剤はANDであるため)。

私が飛び出すのは、2つのテーブルを結合するために使用する必要がある列を表現していないという事実です。これは、join()メソッド内のONキーワードで記述されます。

https://docs.joomla.org/Tables/user_usergroup_map に基づく

あなたはこのように参加するつもりだと思います:

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

より一般的には、Joomla環境内でクエリが期待どおりに機能しない場合は、$query->dump()を実行し、クエリをphpMyAdminに転送して、何が発生するかを確認することをお勧めします。

啓発的であると判明するかもしれない私の関連するポストのいくつかはここにあります:

1
mickmackusa