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();
なぜ「うまくいかない」のかを述べれば、質問はより完全になります。
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に転送して、何が発生するかを確認することをお勧めします。
啓発的であると判明するかもしれない私の関連するポストのいくつかはここにあります: