2013-04-03 3 views
-1

Ce problème me détruit des cerveaux depuis des jours. Lorsque j'effectue une recherche ('all') sur mon modèle Department, aucune donnée associée n'est récupérée. Voici mon modèle Département:Les données associées à cakePHP n'ont pas été récupérées

<?php 
App::uses('AppModel', 'Model'); 

class Department extends AppModel { 

public $displayField = 'name'; 
//The Associations below have been created with all possible keys, those that are not needed can be removed 

public $belongsTo = array(///check 
    'District' => array(
     'className' => 'District', 
     'foreignKey' => 'district_id' 
    ) 
); 
public $hasMany = array(
    'Group' => array(
     'className' => 'Group', 
     'foreignKey' => 'department_id' ///check 
    ), 
    'Request'=>array(
     'className' => 'Request', 
     'foreignKey' => 'department_id', 
    ), 
    'DepartmentPosition'=>array(
     'className'=>'DepartmentPosition', 
     'foreignKey'=>'department_id', 
     'dependent'=>true 
    ), 
); 

}

Quand je ne trouve (« tout »), elle renvoie tous les champs de tous les départements de la base de données, mais aucune donnée associée à tous. dans le contrôleur de services:

$departments = $this->Department->find('all'); 
$this->set(compact('departments')); 

Il se sent comme je l'ai un problème dans le modèle parce que je vais avoir aucun problème avec aucun des autres modèles et retour des données associées, dont un est lié au département. Par exemple, je peux trouver tous les départements liés à un district.

Merci d'avance!

+0

peut vous envoyer tous les paramètres de find(). –

+0

oui, il n'y en a pas à ce stade. Je fais juste find ('all') à ce stade, puis dans la vue en faisant debug ($ departments). Merci @Danial – Todd

Répondre

1

Un nom de fichier de modèle incorrect est la cause la plus fréquente de la non-lecture de votre fichier de modèle et de son utilisation à l'aide d'une instance AppModel pour la table. Vérifiez donc le nom de votre modèle. Assurez-vous que c'est Department.php. Dans votre contrôleur ne debug(get_class($this->Department)); devrait retourner "Département" et non "AppModel".

En supposant que votre fichier de modèle est chargé correctement et que vous avez toujours un problème, la propriété $recursive du modèle est définie sur -1, peut-être dans AppModel.

+0

bonne réponse. merci pour l'astuce de débogage - très intelligent. – Todd

+0

Était le nommage. – Todd

0

Vous devez utiliser ce qui suit:

$this->Department->recursive = 1; 
$departments = $this->Department->find('all'); 
$this->set(compact('departments')); 
+0

Comme je l'ai dit dans la question, ce n'est pas un problème de code de contrôleur. Je ne reçois AUCUNE donnée liée, indépendamment de ce que je tape dans le contrôleur. – Todd

Questions connexes