Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Hi I'm new to this community, so I introduce myself. My name is Gilles, i'm from Belgium, and I have 21 years old.
I'm currently studying ZF for a school project.
I have a problem with the lastInsertId().
Fatal error: Call to undefined method User::lastInsertId() in C:\xampp\htdocs\talkies\application\models\signup.php on line 56
The db connection is done with my main controller.
$configMain = new Zend_Config_Ini('app.ini', APP_MODE);
$db = Zend_Db::factory($configMain->database);
$db->getConnection();
The function "newUser" is in a class:
class User extends Zend_Db_Table_Abstract
{
protected $_name = 'talk_user';
}
public function newUser($name, $surname, $email, $password, $gen, $desc)
{
$utilisateurs = new User;
$data = array(
'nom' => $name,
'prenom' => $surname,
'mail' => $email,
'photo' => $gen,
'motdepasse' => $password,
'desc' => $desc
);
$utilisateurs->insert($data);
$lastId = $utilisateurs->lastInsertId();
}
No problem about inserting data's.
So, I tried to retreive my ID by another way : "SELECT MAX(id) FROM talk_user"
$result = $utilisateurs->fetchAll('SELECT MAX(id) FROM talk_user LIMIT 0,1');
|->ZF returns me an array with ALL the contents from the table "talk_user". Not just the ID I expected.
If I try with fetchOne or fetchAssoc I got the same message as above :
Fatal error: Call to undefined method User::fetchOne() in C:\xampp\htdocs\talkies\application\models\signup.php on line 57
Does anyone have an idea ?
Thank you for your help
Gilles.
Dernière modification par Gilles (27-12-2008 16:43:16)
Hors ligne
Hello,
Essayes/Try :
$lastId = $utilisateurs->insert($data);
A+
Hors ligne
insert() de Zend_Db_Table renvoie le nombre d'enregistrements affectés (1 normalement).
lastInsertId() est une méthode de l'adaptateur :
$lastId = $utilisateur->getAdapter()->lastInsertId();
Voir la doc.
Hors ligne
Merci à vous deux ! Le problème est résolu !
Hors ligne
Hello,
@vg33 :
/** * Inserts a new row. * * @param array $data Column-value pairs. * @return mixed The primary key of the row inserted. */ public function insert(array $data)
T'as pas du la lire en entier
A+
Hors ligne
Autant pour moi.
C'est l'adaptateur qui renvoie le nombre d'enregistrements affectés par insert().
En revanche, comme souvent, le fait que Zend_Db_Table::insert() renvoie l'id n'est pas documenté.
Hors ligne
Hello,
J'ai ajouté une issue sur ce sujet (http://framework.zend.com/issues/browse/ZF-5362). Je tacherais de la résoudre pour la prochaine version.
A+
Hors ligne
OK, et merci beaucoup pour ton travail !
Hors ligne