2010-07-16 15 views
0

id J'essaie actuellement d'accéder aux données qui vient d'être inséré à l'aide:

if($this->User->save($this->data)) 
{ 
    $user_id = $this->User->id; #119 
    ... 

Mais je reçois l'erreur:

Notice (8): Undefined index: id [APP/controllers/users_controller.php, line 119] 
Code | Context 
if($this->User->save($this->data)) 
{ 
    $user_id = $this->data['User']['id']; 

Je ne comprends pas pourquoi la sauvegarde réussit, mais l'identifiant n'est pas défini?

EDIT:
Le problème est que parce que j'utilisais des relations de base de données qui ont forcé ma lecture pour renvoyer des données de plusieurs tables, il a fini par retourner les données de plusieurs tables, donc ce que je devais vraiment faire était:

$user = $this->User->read(); 
$id = $user['User']['id']; 

plutôt que:

$user = $this->User->read(); 
$id = $user['id']; 
+1

Avez-vous vérifié le contenu de '$ this-> data' avant cette instruction if? Avec un 'var_dump ($ this-> data)' –

+0

Avant le if, les variables sont définies, sauf pour ID. Après le if, les variables sont encore définies, à l'exception de l'ID, qui doit être défini par l'insertion. – chustar

+0

OIC, le problème semble être que le modèle ne recharge pas les données de la base de données. Correct? Techniquement parlant, vous n'essayez pas d'accéder aux données qui viennent d'être insérées, mais plutôt aux données créées par la base de données suite à l'insertion. Je ne connais pas CakePHP, mais je ne m'attendrais pas à ce qu'il le fasse seul. Je m'attendrais à devoir recharger ces données de la base de données. –

Répondre

2

Pour obtenir l'ID du dernier enregistrement ce modèle inséré, vous devez utiliser

$this->User->getLastInsertID(); 

Habituellement $this->User->id est utilisé pour faire une action savoir quel enregistrement il devrait gérer, vous ne pouvez pas l'utiliser pour récupérer des données de la base de données.

0

Oui, $model->data['Model']['id'] n'est pas mis à jour lors de la sauvegarde des données. Seulement $model->id est. C'est tout ce qu'on peut en dire.

Questions connexes