Bonjour,
Je viens de remarqué quelque chose d'étrange, à chaque fois que je fais un save ou saveField, cake me fait 2 requête SELECT. La 1ère je comprends, il doit checké si l'enregistrement existe mais je ne comprends pas pourquoi la seconde.
Avez vous déjà eu le même soucis ?
Salut,
Alors pour t'expliquer vite fait, j'ai une page profil d'un membre où j'ai fait un compteur de nombre de vue du profil par un champ dans ma table, à chaque appel de mon action view, je vérifie si le visiteur est différent de celui connecté, si oui je rajoute +1 à mon champs
mon code
$new_view_count = 0;
if($d'profil']'Profil']'user_id'] != $this->Auth->user('id')){
$new_view_count = $d'profil']'Profil']'view']+1;
$this->Profil->id = $d'profil']'Profil']'id'];
$this->Profil->saveField('view',$new_view_count);
$d'profil']'Profil']'view'] = $new_view_count;
}
et mon debug
11 SELECT COUNT(*) AS count
FROM lbc
.profils
AS Profil
WHERE Profil
.id
= 2
12 SELECT COUNT(*) AS count
FROM lbc
.profils
AS Profil
WHERE Profil
.id
= 2
13 UPDATE lbc
.profils
SET view
= 303 WHERE lbc
.profils
.id
= '2'
Soit cake effectue 2 select avant de faire l'update, le 1er je peux comprendre, il doit vérifier que l'enregistrement existe bien mais pourquoi le second ? J'ai testé avec un save à la place du saveField mais même résultat.
J'ai également le même problème pour mon système de membres connectés.
Merci à toi!
Salut,
Est ce que tu as fait une action afterFind dans ton controller par hasard? beforeSave...afterSave?
Bien vu mais non !
Le seul callback que j'ai se trouve dans mon modèle User, je l'ai viré voir mais ça ne change rien
Et a quel moment fais tu ton debug?
Car peut être que ton premier select n'a rien a voir avec ton update?
Cela est génant sinon pour le fonctionnement de ton action?
Car peut être que c'est tout simplement cakePhp qui est ainsi, je n'ai jamais fait attention à vrai dire et cela m'étonnerai... mais bon on ne sait jamais ;)