50 votes

Quel est l'équivalent de getLastInsertId () dans Cakephp?

Si je fais getLastInsertId() immédiatement après un save() , cela fonctionne, mais sinon, cela ne fonctionne pas. Ceci est démontré dans mon contrôleur:

 function designpage() {
    //to create a form Untitled
    $this->Form->saveField('name','Untitled Form');
    echo $this->Form->getLastInsertId(); //here it works
}

function insertformname() {
    echo $this->Form->getLastInsertId(); //this doesnt echo at all
}
 

S'il vous plaît suggérer un moyen d'obtenir la fonctionnalité que je veux.

97voto

nask0 Points 629

CakePHP a deux méthodes pour obtenir le dernier identifiant inséré: Model::getLastInsertID() et Model::getInsertID() . En fait, ces méthodes sont identiques, donc peu importe la méthode que vous utilisez.

 echo $this->ModelName->getInsertID();
echo $this->ModelName->getLastInsertID();
 

Cette méthode peut être trouvée dans cake/libs/model/model.php à la ligne 2768

29voto

s razu Points 141

Il suffit d'utiliser:

 $this->Model->id;
 

22voto

Mike B Points 18950

Dans Cake, le dernier id inséré est automatiquement enregistré dans la propriété id du modèle. Donc, si vous venez d'insérer un utilisateur via le modèle de l'Utilisateur, le dernier id inséré peut être consulté via $User->id

id - Valeur de la clé primaire ID de l'enregistrement de ce modèle actuellement pointant vers. Automatiquement ensemble après la base de données des insertions.

Lire plus sur les propriétés du modèle dans l'API de CakePHP Docs: http://api.cakephp.org/class/model

Edit: je viens de réaliser ce Modèle::getLastInsertID() est essentiellement la même chose que le Modèle->id

Après avoir regardé votre code de plus près, il est difficile de dire exactement ce que vous faites avec les différentes fonctions et, lorsqu'ils existent, dans le grand schéma des choses. Cela peut effectivement être plus d'un problème de portée. Êtes-vous essayer d'accéder au dernier id inséré dans deux différentes demandes?

Pouvez-vous expliquer le déroulement de votre application et comment il se rapporte à votre problème?

9voto

inkedmn Points 12655

Vous aurez besoin de faire une insertion (ou une mise à jour, je crois) pour que getLastInsertId() renvoie une valeur. Pourriez-vous coller plus de code?

Si vous appelez cette fonction depuis une autre fonction de contrôleur, vous pourrez également utiliser $this->Form->id pour obtenir la valeur souhaitée.

8voto

Moyed Ansari Points 5642

Il existe plusieurs méthodes pour obtenir la dernière clé primaire insérée en utilisant la méthode save

 $this->loadModel('Model');
$this->Model->save($this->data);
 

Ceci retournera le dernier identifiant inséré du modèle actuel

 $this->Model->getLastInsertId();
$this->Model-> getInsertID();
 

Ceci retournera le dernier identifiant inséré du modèle avec le nom de modèle donné.

 $this->Model->id;
 

Ceci retournera le dernier identifiant inséré du dernier modèle chargé.

 $this->id;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X