Bonsoir,
Je rencontre un petit probleme pour update deux tables en meme temps
je dispose d'une table "users" et d'une autre "home"
public function update(){
$this->User->id = $this->Auth->User('id');
if(!empty($this->Session->read('Auth.User.id'))){
$this->User->id = $this->Auth->User('id');
$this->User->saveField('role', 1);
$this->Session->write('Auth.User.role',1);
if($this->User->id){
$this->LoadModel('Home');
$this->Home->saveField('is_activate',1);
}
// $this->redirect('/dashboard');
}else{
$this->redirect('/');
die();
}
Je veux que lorsque l'user qui a l'id 1 et se trouve dans la table users, lorsqu'il appelle la methode "update"
dans la table "home" automatiquement dans le champ "is_activate" il prend comme valeur 1
J'obtient bien la valeur 1 dans le champ "is_activate" mais pas cela de l'users cela me creer une autre ligne en DB.
Je vous remercie d'avance de votre aide.
Non, par exemple :
$this->loadModel('Home');
$query = $this->Home->find('first', [
'fields' => ['id'],
'conditions' => ['user_id' => $this->Auth->user('id')]
]);
$this->Home->id = $query['Home']['id'];
$this->Home->saveField('is_activate', 1);
Par contre, étant donné que tu utilises plusieurs fois l'id
de l'utilisateur dans la fonction, tu devrais la stocker dès le début, exemple :
$userId = $this->Auth->user('id');
/* comme ça, dès que tu as besoin de l'id de l'utilisateur dans ta fonction, tu n'as qu'à utiliser la variable $userId
au lieu d'utiliser le composant Auth plusieurs fois dans la fonction juste pour récupérer la même valeur */
Bonsoir.
C'est normal qu'il te fasse un nouvel enregistrement au lieu d'en modifier un, étant donné que tu ne lui précise pas quel enregistrement il doit modifier.
$this->User->id = $this->Auth->User('id');
$this->User->saveField('role', 1);
Ici, tu lui spécifies bien l'enregistrement qu'il doit modifier.
$this->LoadModel('Home');
$this->Home->saveField('is_activate',1);
Mais ici, tu ne le fais pas, tu ne fais que charger le modèle et tu fais le saveField
.
Commences donc par récupérer l'id
de l'enregistrement correspondant avant de faire ton saveField
.
Par contre, pourquoi fais-tu $this->User->id = $this->Auth->User('id');
à deux reprises ?
Une seule fois c'est suffisant.
Une dernière chose, pourquoi fais-tu un die
après la redirection ?
C'est totalement inutile vu que tu as la redirection de CakePHP avant le die
.
Bonsoir Lartak,
Si j'ai bien compris, je dois m'y prendre de cette facon:
$this->LoadModel('Home');
$this->Home->id = $this->User->id;
$this->Home->saveField('is_activate',1);
Sinon en ce qui concerne la repetition de $this->User->id = $this->Auth->User('id');
c'etait une erreur d'inattention (j'avais ecrit cette methode vers 3 ou 4h du matin :P)
En ce qui concerne le die, j'ai en effet pris une habitutde sans framework lors d'une redirection afin d'empecher les utilisateurs d'utiliser certaines extentions comme NoRedirect.
Bonjour Lartak,
Je te remercie pour ta reponse, et pour le conseil.
Probleme resolu. :)