2013-05-06 3 views
1

J'ai une question sur mongodb, model cakephp et les relations.cakephp et mongodb - relations

Je crée les relations suivantes:

utilisateur -> hasMany -> Ville
Ville -> belongsTo -> Utilisateur

En MongoDB, j'ai deux tables:

utilisateurs villes (avec la clé user_id)

Dans cakephp, j'ai 2 modèle: User.php

class Utilisateur extends Model {
public $ name = 'utilisateur';
public $ actsAs = array ('Contenable');
public $ hasMany = array ('Ville');
..
}

et: City.php

Ville de classe étend le modèle {
publique $ name = 'City';
public $ actsAs = array ('Contenable');
public $ belongsTo = array ('Utilisateur');
.. }

Dans mon contrôleur j'utilise:

$ user = $ this-> Utilisateur-> find ('all');

mais cela ne fonctionne pas. En vidage sql, cakephp utilise une recherche uniquement sur les utilisateurs tbl. Pourquoi? Où je me trompe?

Répondre

0

Je place normalement récursif à -1 et peut être confiné dans le modèle d'application, donc il s'applique à tous les modèles que vous créez, sauf si vous le remplacez spécifiquement. Vos relations sont correctes, bien que j'ajoute habituellement className et foreignKey juste pour être sûr et effacer. Dans votre contrôleur, vous devez faire quelque chose comme ceci:

$users = $this->User->find('all', array(
    'contain' => array(
     'City' 
    ) 
)); 

récursive empêchera tout enregistrement associé étant inclus par défaut, ce qui est bon que parfois vous n'avez pas besoin des données récursives et des données supplémentaires aideront à ralentir votre application. Après avoir ajouté dans votre recherche d'appel peut sembler une corvée, mais il sera clair et concis ce que vous interrogez, tout développeur tiers comprendra exactement ce que vous faites si ils savent comment utiliser Cake. J'espère que cela t'aides.

+0

mmhm, désolé! J'essaie les suggestions mais ma sortie ne fonctionne pas.

 db.users.find({"_id":ObjectId ("518266026803fa1d4a000002")}, []).sort([]).limit(1).skip(0)
:( – diema