developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.
Opened 9 years ago
Closed 9 years ago
#1444 closed bug (invalid)
Debugbar et comptage des requêtes sql
Reported by: | nesswaw | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | jelix | Version: | 1.3.1 |
Severity: | normal | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Documentation needed: | no | |
Hosting Provider: | Php version: |
Description
Bonjour,
J'ai ce code dans une méthode d'un controller
function insert() { $dao = jDao::get('admin~reference'); $rec = jDao::createRecord('admin~reference'); $rec->title = 'Test'; $rec->description = 'Desc'; $dao->insert($rec); $rep = $this->getResponse('html'); $rep->body->assign('MAIN', '<div id="content"><p>Ok</p></div>'); return $rep; }
Une fois l'action exécuté, ma base contient bien un enregistrement en plus, mais la debugbar affiche qu'il y a eu deux insert.
Si je fais une boucle de 10, il fera bien 10 requêtes, mais la debugbar va afficher 20 requêtes...
Change History (5)
comment:1 Changed 9 years ago by bricet
comment:2 Changed 9 years ago by laurentj
Le type de base peut aussi influencer les requêtes exécutées.
comment:3 Changed 9 years ago by nesswaw
Bonjour,
Oui j'ai bien sur un champ un "insertpattern" et updatepattern" et en effet, il fait un INSERT et un SELECT, pourquoi ce SELECT?
Merci
comment:4 Changed 9 years ago by bricet
Parce que le ->insert() retourne l'enregistrement inséré. Et il faut donc faire une requête pour connaître la valeur de cet enregitrement (parce qu'au moins un champ a été affecté par le moteur SQL : soit en auto-incriment, soit en insert pattern). Ce sont les PKs qui sont utilisées pour récupérer cet enregistrement (ce qui fait d'ailleurs l'objet d'un autre ticket dont je dois m'occuper : shame on me). D'après la réponse de laurentj, il y a d'autres circonstances dont je ne peux te donner les détails, mais l'esprit doit rester le même ...
Je ne mets pas en "invalid" parce que je ne sais pas si j'ai assez de notoriété pour me le permettre ;)
comment:5 Changed 9 years ago by laurentj
- Resolution set to invalid
- Status changed from new to closed
bricet +1 :-)
Pour compléter ce bug report, je pense que l'on aurait bien besoin de ton DAO.
Par ailleurs, es-tu sûr que ce sont bien 2 requêtes d'INSERT que tu as dans ta debugbar et non 1 d'INSERT et 1 de SELECT (ce qui pourrait être le cas si tu as une colonne auto-incriment ou un insertpattern, AMHA)