2011-11-22 4 views
1

Je suis un utilisateur Yu assez récent, et j'ai un petit projet que je fais. Je n'utilise pas le générateur de modèles de Yii car mes requêtes sont assez personnalisées et je ne suis toujours pas à l'aise avec l'ensemble de l'enregistrement actif yii, donc je m'en tiens au constructeur de requêtes pour l'instant. J'ai saisi les idées de base pour faire des déclarations sql, mais je pense que je vais rencontrer un problème avec celui que je dois faire.Yii insérer des données

Fondamentalement, j'insère des données dans une table, et j'ai besoin d'obtenir la valeur de la colonne d'identification des données juste insérées. Le plus simple serait de faire un insert et d'obtenir la valeur max de la colonne id, mais je suis certain que ce n'est pas la bonne façon de le faire - puisque quelqu'un d'autre peut insérer des choses "en même temps" et je pourrais finir par obtenir la mauvaise valeur - et j'ai besoin de la bonne parce que je vais l'insérer dans une autre table.

J'ai vu que la valeur de retour de la fonction insert() est un entier, le nombre de lignes insérées donc je ne peux pas l'utiliser.

Fondamentalement, y at-il un moyen d'obtenir les données que je viens d'insérer dans une table qui est 100% & sûr - même si quelqu'un d'autre a inséré quelque chose à la table "en même temps"?

Répondre

4

Vous voulez getLastInsertId() of the CDbConnection classe:

$id = Yii::app()->db->getLastInsertId(); 
+1

+1 pour spot on. Mais pour un crédit supplémentaire: c'est juste un emballage pour l'appel à PDO natif lastInsertId: p – Paystey

3

si vous avez enregistré le modèle, vous pouvez y accéder avec

$model->id 

supposant que id est le champ id incrémentation automatique dans votre base de données. évidemment, avant que le modèle est enregistré, vous ne pouvez pas obtenir son ID