Bonjour a tous et a toute
alors comme je le dis dans mon titre, je suis un peu perdu dans le fonctionnement des loadModel.
Pour la petite histoire: j'aimerais untiliser le champs "persomax" de ma table users dans mon controller "persos".
j'arrive sans probleme a charger ma table avec sa :

$this->loadModel('User'); 
    $users=$this->User->find('all');

Mais je ne sais plus trop quoi faire apres cette etapes par ce que la il prend toute ma tables users et me l'affiche... alors que moi il me faudrait juste le champs persomax de mon user actuel pour le sauvegarder dans une variable et l'utiliser dans le reste de ma fonction ...

merci d'avoir pris le temps de lire mon message et d'avance je remercie celui ou celle qui prendra en plus le temps de me repondre !

6 réponses


Kareylo
Réponse acceptée

Aaaaaaaaah ! Alors c'est très simple à faire !

$user = $this->User->find('first', array(
    'conditions' => array(
        'User.id' => $this->Session->read('Auth.User.id')
    ),
    'fields' => array('User.id', 'User.persomax')
));

Et si récupérer tous les champs te dérange pas :

$this->User->recursive = -1;
$user = $this->User->findById($this->Session->read('Auth.User.id'));

Et sans être totalement sûr de l'utilisation des fields avec read :

$this->User->id = $this->Session->read('Auth.User.id');
$this->User->read(array('User.id', 'User.persomax'));

Utilises les fields :

$users = $this->User->find('all', 'fields' => array('User.persomax'));
B3AR117
Auteur

Merci Kareylo
Mais j'ai bien peur que sa ne marche pas =(
J'ai une erreur Error: syntax error, unexpected T_DOUBLE_ARROW
Apres avoir un peu modifie le truc

$users = $this->User->find('all', 'fields' ,array('User.persomax'));

je n'est plus l'erreur, mais il m'affiche tout les utilisateurs ...

j'ai egalement tente de cette facon la

$users = $this->set('users', $this->User->find('all', array('fields' => array('User.id', 'User.persomax'))));

mais dans se cas la j'ai juste un NULL =(

Si tu débug le $users avec ceci, tu obtiens un null ?

$users = $this->User->find('all', array('fields' => array('User.id', 'User.persomax')));
B3AR117
Auteur

re salut Kareylo,
alors nn si je fais comme sa j'obtient quelque chose de similaire a sa :

(int) 1 => array(
        'User' => array(
            'id' => '6',
            'persomax' => '6'
        )
    ),

pour chaque ligne de ma table users
et moi j'aurais besoin d'utiliser uniquement celui qui concerne la session en cours d'utilisation ...

encore merci de prendre le temps de regarder mon probleme =)

B3AR117
Auteur

merci beaucoup Kareylo!