ラボ > FuelPHP:DB関連、エラー絡み

FuelPHP 別のDBに接続(クエリビルダ)

既存のDBとは別のDBに接続してデータを取得したい

作成日:2019-11-13, 更新日:2019-11-13

基本

・「\app\config\〇〇〇\db.php」に新しい接続先を追加
・クエリビルダの「execute()」にDBの設定名を渡す

▼「\app\config\〇〇〇\db.php」

<?php
return array(
	'default' => array(
		'connection'  => array(
			'dsn'        => 'mysql:host=xxxx;dbname=xxxx',
			'username'   => 'xxxx',
			'password'   => 'xxxx',
		),
	),
	'●●●' => array(
		'type'        => 'pdo',
		'connection'  => array(
			'dsn'        => 'mysql:host=xxxx;dbname=xxxx',
			'username'   => 'xxxx',
			'password'   => 'xxxx',
		),
	),
);

▼呼び出し

// 「default」のほうを使うとき
$hogeA = \db::〇〇〇->execute();

// 「●●●」のほうを使うとき
$hogeB = \db::〇〇〇->execute(●●●);

めも

type=>pdo

・「default」のほうは問題なし
・追加したDBの設定に「'type'=>'pdo',」を忘れるとエラーになる

▼「'type'=>'pdo',」が無く「\db::〇〇〇->execute(●●●);」をしたときのエラー

Fuel\Core\FuelException [ Error ]:
Database type not defined in "●●●" configuration or "●●●" configuration does not exist

db::last_query()

・「\db::〇〇〇->execute(●●●);」をしたときの「db::last_query()」を取得したい。
→「execute(●●●)」と同じように「last_query()」にも引数を渡す

▼取得したい場合

$r = \db::〇〇〇->execute(●●●);
echo \db::last_query(●●●);