Requête SQL double

Par Majid Cameleon, il y a 10 ans


Bonjour à tous et merci d'avance pour votre aide.

Je ne parvient à comprendre pourquoi CakePHP double une requête SQL.

Controller

public function view($id){ //Renvoie à l'index si l'isset n'est pas définit if (!isset($id)){$this->redirect('index');} //Vérifie si l'entité à afficher appartient bien à l'utilisateur ? $pet = $this->Pet->find('first', array('conditions' => array( 'Pet.user_id' => $this->Auth->user('id'), 'Pet.id' => $id ))); //Si le résultat de la requête est vide if(empty($pet)){ $this->Session->setFlash( 'Cette action ne peut être éxécuté.', 'default', array('class' => 'alert alert-danger') ); $this->redirect('index'); }else{ if (!empty($this->request->data)){ //Opérateur ternaire, vérifie l'existence de l'upload ou d'un avatar existant. //$avatar = (empty($this->request->data['Pet']['avatarInput']['name'])) ? '' : 'avatarInput'; $this->Pet->set($this->request->data['Pet']); //Met les données dans le modéle if($this->Pet->validates(array('fieldList' => array('pet_name') ))){ $this->Pet->save(array( 'pet_name'=> $this->request->data['Pet']['pet_name'] //'avatar' => $avatar = (empty($avatar)) ? 0 : 1 //0=> pas d'avatar, 1=> avatar disponible ), false); $this->Session->setFlash( 'Votre animal a bien été modifié.', 'default', array('class' => 'alert alert-success') ); } else { $this->Session->setFlash( 'Les données introduite ne sont pas valide.', 'default', array('class' => 'alert alert-info') ); } } else { $this->request->data = $pet; } } }

Model

public function afterFind($results, $primary = false){ //Récupére les path des avatars. foreach ($results as $k => $result){ if(isset($result[$this->alias]['avatar']) && isset($result[$this->alias]['id'])){ if($result[$this->alias]['avatar'] == 0){ $results[$k][$this->alias]['avatarPath'] = 'pets/no_avatar.jpg'; } else { $results[$k][$this->alias]['avatarPath'] = 'pets/' . ceil($result[$this->alias]['id'] / 1000) . '/' . $result[$this->alias]['id'] . '.jpg'; } } } return $results; }

Logs Sql

BEGIN 1 1 0 SELECT COUNT(*) AS `count` FROM `petsy`.`pets` AS `Pet` WHERE `Pet`.`id` = 32 1 1 0 SELECT COUNT(*) AS `count` FROM `petsy`.`pets` AS `Pet` WHERE `Pet`.`id` = 32 1 1 0 UPDATE `petsy`.`pets` SET `id` = 32, `pet_name` = 'Rombaaa' WHERE `petsy`.`pets`.`id` = '32' 0 0 1 maybe slow COMMIT

Merci à vous,

2 réponses

Grafikart, il y a 10 ans

Mmh là ce n'est pas forcément facil à débugguer, je ne vois pas trop le code qui génère le count.

Majid Cameleon, il y a 10 ans

Moi aussi, je ne parviens pas à comprendre pourquoi.
Si j'en découvre la raison, je l'indiquerais dans ce post.

J'en ai jamais eu l'occasion, alors c'est le moment.
Encore merci pour tout le boulot que tu fais pour nous.