2010-09-19 12 views
1

C'est probablement une question stupide, mais je ne trouve pas de réponse définitive nulle part. Est-il possible d'accéder aux données du modèle dans un contrôleur, et si oui, comment?Pouvez-vous accéder aux données du modèle dans le contrôleur dans CakePHP?

J'ai essayé les éléments suivants:

$this->set('mydata', $this->Model->find('all', 'conditions' => array('id' => 'someID'))); 

et y accéder via ce dans le contrôleur:

$mydata['Model']['field'] 

Mais cela semble être seulement pour les points de vue.

Existe-t-il un moyen d'accéder aux données du modèle dans le contrôleur? La raison en est que je dois effectuer des calculs sur un modèle associé (belongsTo) qui ne peut pas être fait via des champs cachés ou quoi que ce soit parce que l'ID du modèle associé n'est pas passé avant que le formulaire ne soit soumis.

Toute aide serait grandement appréciée!

Répondre

1

Hmm, que diriez-vous:

$myData = $this->Model->find('all', 'conditions' => /* ... */); 

$myData['Model']['field']; 
$myData['RelatedModel']['field']; 

$this->set('mydata', $myData); 

assez simple :)

Model :: find() retourne vos données, vous n'avez pas besoin de passer directement à l'ensemble du contrôleur() , vous pouvez d'abord jouer avec et ensuite le transmettre à vos vues. Mais, je vous déconseille, il est préférable d'avoir Model :: messWithData ($ data) et laisser les modèles traiter les données, et laisser les contrôleurs s'occuper de la logique de l'application. Rappelez-vous, gros modèles, contrôleurs maigres!

+1

Merci pour la réponse! Ce que j'essaie de faire est d'effectuer un calcul qui utilise un peu de données de la soumission du formulaire et le mélange avec les données d'un modèle belongsTo associé. Vous dites que je devrais avoir une fonction dans le modèle associé qui effectue le calcul et ensuite l'appeler simplement dans le contrôleur? – Justin

+1

Cela dépend de ce que vous essayez de faire, mais ma réponse est essentiellement "oui". :) Il est préférable de conserver vos données dans vos modèles (c'est leur but!), Sauf si c'est quelque chose que vous allez afficher dans la vue (c'est-à-dire s'il s'agit d'un problème de formatage). utiliser une aide personnalisée qui préparerait les données pour l'affichage). –

+0

Merci - J'ai commencé à implémenter ceci sur l'ensemble du projet et cela rend le code beaucoup plus lisible pour avoir toutes les requêtes DB dans les modèles! – Justin