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,
Mmh là ce n'est pas forcément facil à débugguer, je ne vois pas trop le code qui génère le count.
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.