2010-11-24 4 views
0

Je me suis cogné la tête contre le mur avec un problème vraiment ennuyeux. J'ai deux classes de modèle:: La récursivité du modèle échoue

class User extends AppModel { 
    var $name = 'User'; 
    var $hasMany = array(
     'Application' => array(
      'className' => 'Application', 
      'foreignKey' => 'user_id', 
      'dependent' => false, 
     ) 
    ); 
} 

class Application extends AppModel { 
    var $name = 'Application'; 
    var $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id', 
     ) 
    ); 
} 

Je veux tirer Applications et les champs d'utilisateur qui lui sont associés.

$this->Applications->find(); 

Peu importe ce que je mets récursive $ à, il me donne encore une seule sortie:

Array 
(
    [Applications] => Array 
     (
      [id] => 1 
      [user_id] => 3 
      [datecreated] => 
      [status] => 
      [source] => 1 
     ) 

) 

D'autre part, quand je tire les données de la table des utilisateurs avec l'ensemble récursif à 2, Je reçois tous les utilisateurs, avec leurs applications, avec les données utilisateur associées à l'application avec les applications associées à l'utilisateur. Pour le mettre simple et simple, voici ce que je reçois:

Array 
(
    [0] => Array 
     (
      [User] => Array 
       (
        [id] => 3 
        [email] => [email protected] 
        [password] => hashstring 
        [socialsecurityno] => 21232134123 
        [role_id] => 3 
        [firstname] => Firstname 
        [lastname] => Lastname 
        [status] => 1 
       ) 

      [Application] => Array 
       (
        [0] => Array 
         (
          [id] => 1 
          [user_id] => 3 
          [datecreated] => 
          [status] => 
          [source] => 1 
          [User] => Array 
           (
            [id] => 3 
            [email] => [email protected] 
            [password] => hashstring 
            [socialsecurityno] => 21232134123 
            [role_id] => 3 
            [firstname] => Firstname 
            [lastname] => Lastname 
            [status] => 1 

            [Application] => Array 
             (
              [0] => Array 
               (
                [id] => 1 
                [user_id] => 3 
                [datecreated] => 
                [status] => 
                [source] => 1 
               ) 

             ) 

           ) 



         ) 

       ) 

     ) 
) 

Ce que je veux, est d'obtenir des applications, ses informations d'utilisateur associé, et c'est tout. Je ne suis pas à court d'idées à court de créer une relation habtm entre les applications et les utilisateurs, ce qui serait techniquement incorrect, car un utilisateur peut avoir de nombreuses applications mais une application n'a qu'un seul utilisateur.

À l'heure actuelle, Applications est connecté avec les utilisateurs via user_id dans la table Applications, ce qui ... devrait être évident, mais devrait probablement être noté de toute façon.

Tout type d'aide avec ceci pourrait être apprécié, je suis littéralement à court d'idées.

Répondre

0

Si Model::find est appelé sans paramètre, gâteau, il traite comme si vous avez fait cette demande:

Model::find('first',array('limit'=>1)); 

Cela explique pourquoi il est seulement récupérer la première application. Pour récupérer toutes les applications, modifier votre appel à:

$this->Application->find('all'); 

Ce n'a pas expliquer pourquoi Model::find ne tient pas compte du réglage du modèle recursive, et, en fait, je ne peux pas trouver un moyen de reproduire cette question, à moins que c'est quelque chose de stupide comme si vous aviez tapé le nom du modèle lors de la définition du niveau de récursion (par exemple $this->Applications->recursive = 1;, notez la pluralisation de "Application").

Espérons que cela aide.

+0

Le problème n'est pas de récupérer plus d'une application, je suis pleinement conscient que la recherche nécessite un paramètre pour aller chercher plus d'un. Il n'y a qu'une seule application dans la base de données à des fins de test. Le problème consiste à récupérer les modèles associés. Cependant, je vais passer par tous les scénarios possibles que j'ai pu faire mal et voir si je peux trouver quelque chose. – NeroS

Questions connexes