Question

J'ai un projet qui couvre nécessairement plusieurs bases de données.

Une base de données a des tables:

CREATE TABLE device {
  device_uid integer unsigned not null primary key auto_increment,
  os varchar(50),
  name varchar(50)
}

CREATE TABLE platform {
  platform_id integer unsigned not null primary key auto_increment,
  name varchar(50)
}

L'autre base de données a la table:

CREATE TABLE oses_platforms {
  platform_id integer unsigned not null primary key auto_increment,
  os varchar(50),
  platform_id integer unsigned
}

Je l'ai créé des modèles pour les tables et la relation:

<?php
class Platform extends AppModel {

    var $name = 'Platform';
    var $useTable = 'platform';
    var $primaryKey = 'platform_id';
    var $useDbConfig = 'otherdb';

    var $hasOne = array(
        'OsesPlatform' => array(
            'className' => 'OsesPlatform',
            'foreignKey' => 'platform_id'
        )
    );
}

class Device extends AppModel {

    var $name = 'Device';
    var $primaryKey = 'device_uid';
    var $useDbConfig = 'otherdb';        

}

class OsesPlatform extends AppModel {

    var $useDbConfig = 'default';
    var $name = 'OsesPlatform';
    var $primaryKey = 'os';


        var $belongsTo = array(
                'Platform' => array(
                        'className' => 'Platform',
                        'foreignKey' => 'platform_id',                            
                ),
        );

        var $hasMany = array(
                'Device' => array(
                        'className' => 'Device',
                        'foreignKey' => 'os',
                        'dependent' => false,                            
                )
        );
}
?>

Si les trois tables résidèrent dans « défaut » ou « autrebase », je pourrais le faire dans l'argument « conditions » à une relation hasOne ou belongsTo du périphérique à OsesPlatform, et en fait la relation hasOne entre la plate-forme et OsesPlatform fonctionne très bien . Cependant, il est la relation entre l'appareil et la plate-forme que je dois modéliser.

Était-ce utile?

La solution

Il se trouve que, les relations HABTM à travers les bases de données ne sont pas officiellement pris en charge dans Cake (ce de markstory sur # cakephp). Bien qu'il fonctionne parfois, on ne sait pas (au moins pour moi) dans quelles conditions il fonctionne, et il n'y a aucun plan pour améliorer le soutien à cet effet. Je vais donc faire de cette façon une autre.

Autres conseils

Peut-être cette page explique le code que vous êtes après: http://blog.4webby.com/posts/view/6/cakephp_models_using_multiple_db_connections

L'espoir qui aide.

Simon.

J'ai essayé de recréer votre structure cakeapp.com. Jetez un coup d'oeil au schéma http://cakeapp.com/sqldesigners/sql/oses

Mais lorsque je tente d'ajouter un périphérique dans l'application automatiquement créé ici: http: //oses.cakeapp.com/cake/oses/devices/add il semble un peu mal.

Vous pouvez modifier la structure DB avec le mot de passe: "oses". Et nous allons cakeapp.com créer l'application automatiquement en cliquant sur le lien # 3: « Construire l'application CakeApp en fonction des paramètres et SQL »

Peut-être que cela vous aide?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top