我正在學習PHP中的MVC並使用PDO進行數據庫訪問。PHP MVC PDO多個數據庫
我的數據庫類如下(我用的數據庫變量的配置文件中定義):
class Database extends PDO {
public function __construct($dbconn ="mysql") {
$options = array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING);
switch($dbconn) {
case 'usados':
parent::__construct(DB_TYPE_USADOS . ':host=' . DB_HOST_USADOS . ';dbname=' . DB_NAME_USADOS, DB_USER_USADOS, DB_PASS_USADOS, $options);
break;
case 'autos':
parent::__construct(DB_TYPE_AUTOS . ':host=' . DB_HOST_AUTOS . ';dbname=' . DB_NAME_AUTOS, DB_USER_AUTOS, DB_PASS_AUTOS, $options);
break;
case 'servicos':
parent::__construct(DB_TYPE_SERVICOS . ':host=' . DB_HOST_SERVICOS . ';dbname=' . DB_NAME_SERVICOS, DB_USER_SERVICOS, DB_PASS_SERVICOS, $options);
break;
default:
parent::__construct(DB_TYPE_MYSQL . ':host=' . DB_HOST_MYSQL . ';dbname=' . DB_NAME_MYSQL, DB_USER_MYSQL, DB_PASS_MYSQL, $options);
break;
}
}
}
而且在示例模型中,我有:
class Note_Model extends Model {
public $errors = array();
public function __construct() {
parent::__construct($dbconn="mysql");
}
public function getAllNotes() {
$sth = $this->db->prepare("SELECT user_id, note_id, note_text
FROM note
WHERE user_id = :user_id ;");
$sth->execute(array(':user_id' => $_SESSION['user_id']));
return $sth->fetchAll();
}
}
我有2個問題:
在我的數據庫類,是我的方法爲不同的數據庫連接(將使用不同的m odels)好嗎?交換機結構是否適用於這種情況,以及哪裏可以連接的變量?
我可以連接到不同模型的不同數據庫,但是如果我有需要,如何從1個相同模型的不同數據庫中獲取數據。例如,在顯示來自不同來源的信息的儀表板中。這不僅僅是$ this-> db,是嗎?
謝謝你的進步。
僅供參考,在OOP中'extends'關鍵字與** IS A **同義。你確定*「Note_Model」是一個PDO *嗎?另外,MVC中的模型是一個層,而不是**類。 –
嗨特雷斯科!那麼,如果我需要一個「Note_Model」,它不應該是一個模型嗎?那麼我能做些什麼來使它成爲一個層? – mjpramos