Bonjour,Codeigniter DataMapper Cross-Database rejoint
Je travaille actuellement sur un projet qui utilise Codeigniter et la Bibliothèque DataMapper (http://datamapper.wanwizard.eu). Le projet utilise une base de données centrale pour les données utilisateur (appelée "base") et une base de données séparée pour les données d'application ("crm"). Ceci afin qu'à l'avenir, nous puissions construire d'autres applications utilisant le répertoire utilisateur sans être liées à un seul serveur.
J'ai un problème en ce que j'ai besoin d'utiliser les relations de Datamapper intégrées, mais à travers les deux bases de données. Voici ma configuration jusqu'à présent:
Personne Modèle
class person extends DataMapper {
var $db_params = 'base';
var $prefix = 'base_';
var $has_many = array(
'initiated_event' => array('class' => 'event','other_field' => 'initiator')
)
}
Modèle événement
class event extends DataMapper {
var $db_params = 'crm';
var $prefix = 'crm_';
var $has_one = array(
'initiator' => array('class' => 'person','other_field' => 'initiated_event')
)
}
Le problème
Lorsque je tente d'utiliser Events- $ > initiateur-> get(), je reçois l'erreur suivante:
Error Number: 1146
Table 'circle_base.crm_events' doesn't exist
SELECT `base_persons`.* FROM (`base_persons`) LEFT OUTER JOIN `crm_events` initiated_event_crm_events ON `base_persons`.`id` = `initiated_event_crm_events`.`initiator_id` WHERE `initiated_event_crm_events`.`id` = 1
Filename: C:\xampp\htdocs\circle\crm\system\database\DB_driver.php
Line Number: 330
Quelqu'un pourrait faire la lumière sur la question? DataMapper prend-il réellement en charge les jointures entre bases de données. Si non, y a-t-il un moyen d'y parvenir?
J'ai la même question. J'ai posté une [question] (http://stackoverflow.com/questions/16171576/joining-tables-in-different-databases-with-the-ci-datamapper-orm) plus tôt à ce sujet. J'ai jeté un coup d'oeil à la bibliothèque de datamapper et il semble qu'ils ne vérifient pas si la table liée est dans une autre base de données. Comment avez-vous abordé ce problème? – Brainfeeder