CodeIgniter4 複数のデータベースを設定する

Mysqlをメインデータベースと使用していますが、ProgreSQLからデータを取得する必要があり、2つ目のデータベースを設定したので、その方法を紹介します。

目次

ProgreSQL接続の確認

phpinfoを開いて、pgsqlのdriverが使用できる状態になっているか確認してください。

phpinfo

できてない場合は、php.iniの設定等を行ってください

データベースの接続設定

今回のデータベース設定は、app\Config\Database.phpで行っていますので、PostgreSQLの設定を追加します。MySqlのデータベースを追加する場合も同様になります。
public $default = []の内容をコピーし、下に貼り付けてください。
2番目のデータベースの設定をここに記入すればOKです。


  ublic $secondDB = [              //クラスプロパティ名は接続名になります。
  'DSN' => '',   'hostname' => 'localhost', //記入
  'username' => 'postgres', //記入
  'password' => 'password', //記入
  'database' => 'postgres', //記入
  'DBDriver' => 'postgre', //記入
  'DBPrefix' => '',
  'pConnect' => false,
  'DBDebug' => (ENVIRONMENT !== 'production'),
  'cacheOn' => false,
  'cacheDir' => '',
  'charset' => 'utf8',
  'DBCollat' => 'utf8_general_ci',
  'swapPre' => '',
  'encrypt' => false,
  'compress' => false,
  'strictOn' => false,
  'failover' => [],
  'port' => 5432, //ポートを確認してください
];

モデルの設定

app\Models\に新しいモデルを設定します。pgsqlModel.phpのように、新しいモデルファイルを作成します。$DBGroupに、接続名を設定します。他の設定は、一つ目のデータベースと同様に設定してください。



use CodeIgniter\Model;

class PgsqlModel extends Model{
  protected $DBGroup = '$secondDB'; //上記で設定した接続名を設定します。
  protected $table = 'table_name';
  protected $primaryKey = 'id';

  protected $returnType = 'array';
  protected $useSoftDeletes = false;

  protected $allowedFields = ['id', 'family_name', 'first_name', 'telephone', 'eMail'];

  protected $useTimestamps = false;
  //protected $createdField = 'created_at';
  //protected $updatedField = 'updated_at';
  //protected $deletedField = 'deleted_at';

  protected $validationRules = [];
  protected $validationMessages = [];
  protected $skipValidation = false;

}

コントローラーの設定

ネームスペースに、モデルを設定する


  namespace App\Controllers;
use App\Models\defaultDBModel;
use App\Models\PgsqlModel; //モデルを追記する

コンストラクターにデータベース接続を追記する。


  public function __construct(){
  $this->db=\Config\Database::connect();
  $this->db1=\Config\Database::connect("secondDB"); //追記する
}

以上で完了です。

——ホタイブログ—–

関連記事
Chart.js 複数軸で右表示しない、min/max設定ができない
CodeIgniter4 MS SQL SERVERの接続
JSONを使ったDataTablesに編集ボタンを実装する。
CodeIgniter4にJSONを使ってDataTablesを実装する
CodeIgniter4にBootstrap、DataTablesを使ったページネーション
CodeIgniter4 シンプルなページネーションの実装

SNSでもご購読できます。

コメント

コメントを残す

*