4

phpbb3 をコード イグナイターと統合しようとしています。私はかなり成功しましたが、フォーラムデータベースにアクセスしようとしていますが、機能していません。これは現在、データベース ファイルにあるものです。

/** FORUM DATABASE **/

$active_group = 'forum';
$active_record = TRUE;

$db['forum']['hostname'] = 'localhost';
$db['forum']['username'] = 'root';
$db['forum']['password'] = 'root';
$db['forum']['database'] = 'phpbb';
$db['forum']['dbdriver'] = 'mysqli';
$db['forum']['dbprefix'] = 'phpbb';
$db['forum']['pconnect'] = FALSE;
$db['forum']['db_debug'] = TRUE;
$db['forum']['cache_on'] = FALSE;
$db['forum']['cachedir'] = '';
$db['forum']['char_set'] = 'utf8';
$db['forum']['dbcollat'] = 'utf8_general_ci';
$db['forum']['swap_pre'] = '';
$db['forum']['autoinit'] = TRUE;
$db['forum']['stricton'] = TRUE;

/** CMS DATABASE **/
$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root';
$db['default']['database'] = 'cms';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = TRUE;

そして、これはデータベースにアクセスしようとしているメソッドです。null を返し続けます。

public function getUserGroupMembership()
{
  $forum = $this->load->database('forum',TRUE);
  global $table_prefix;
  $userId = $this->_user->data['user_id'];
  $this->forum->select('g.group_name');
  $this->forum->from($table_prefix . 'groups g');
  $this->forum->from($table_prefix . 'user_group u');
  $this->forum->where('u.user_id', $userId);
  $this->forum->where('u.group_id', 'g.group_id', FALSE);
  $query = $this->forum->get();
  foreach ($query->result_array() as $group)
  {
      $groups[] = $group['group_name'];
  }
  return $groups;
}
4

2 に答える 2

1

データベース オブジェクトは$forum変数に読み込まれますが、$this->forum変数はデータベースと対話するために使用されます。$forumローカル変数で$this->forumあり、クラス変数であるため、機能しません。それらは同じではありません。コードを修正するには、またはに変更$forumする必要があります。両方を同時に使用することはできません。$this->forum$this->forum$forum

于 2013-02-05T15:20:34.463 に答える
1

両方のデータベースで $active_group と $active_record を再宣言する必要はないと思います。

削除する場合:

$active_group = 'フォーラム';
$active_record = TRUE;

それはうまくいくかもしれません。また、Maxime が言ったことを実行し、$forum を $this->forum に変更する必要があります。

お役に立てれば!

于 2013-02-04T01:38:50.723 に答える