2010-06-28 16 views
2

J'ai mis en place une nouvelle configuration de base de données en application/config/database.php appelée staff.Comment puis-je changer la base de données par défaut utilisée dans Kohana 3?

J'ai ensuite créé un nouveau modèle de base et ajouté une variable protégée $db et l'ai définie dans le constructeur à $this->db = Database::instance('staff').

Lorsque je tente de remplacer Db::query(Database::SELECT, $query) avec $this->db->query(Database::SELECT, $query), il échoue avec ...

Missing argument 3 pour Kohana_Database_MySQL :: query()

Le 3ème argument que je suis absent est $as_object , qui est et non requis lors de l'utilisation de la méthode statique query(). Ma conjecture est la méthode statique passe cela pour moi. Il retourne effectivement new Database_Query($type, $sql).

Je pense que je me trompe.

Existe-t-il un moyen de surcharger le Db::query() statique que j'utilise habituellement dans différentes classes avec la configuration de base de données alternative?

Merci

Répondre

5

J'ai ensuite fait un nouveau modèle de base, et a ajouté une variable $ db protégé et mis dans le constructeur de $ this-> db = Base de données :: instance ('personnel') .

Vous avez chargé une base de données dans votre contrôleur.

Lorsque je tente de remplacer Db :: query (Base de données :: SELECT, $ query) avec $ this-> db-> query (Base de données :: SELECT, $ query), il échoue avec ...

Vous créez maintenant une requête.

Ensuite, vous devez exécuter la requête en utilisant la base de données que vous avez créé:

$result = $query->execute($this->db); 

Dans Kohana v3, les requêtes et les bases de données sont séparées, donc vous devez dire la requête base de données à exécuter sur, plutôt que de dire à la base de données d'exécuter une requête. La requête se compilera elle-même, puis appellera $db->query($sql) elle-même.

Vous pouvez également raccourci autour de charger la base de données:

$query->execute('staff'); 

qui exécutera sur la base de données « du personnel ».

+0

Merci Shadowhand! – alex