[CakePHP 3] Impossible de sauvegarder avec le même utilisateur

Par Romano83, il y a 10 ans


Bonjour à tous,

j'ai un petit soucis de sauvegarde que je n'arrive pas à comprendre pour l'instant.

J'ai mis en place un système de commentaires sur un simple blog et il m'est impossible d'effectuer deux sauvegardes lorsque un utilisateur a déjà commenter un post (et ce quelque soit son niveau -- admin ou simple user). Par contre, si cet utilisateur n'a pas encore posté de commentaires, la sauvegarde se déroule sans problème.

En débugant différentes données ($data et $comment), je récupère bien les données et l'entité est créée correctement...

Ma fonction est pourtant simple :

public function add() { if ($this->request->is('post')) { $data = $this->request->data; if ($this->Auth->user()) { $data['username'] = $this->Auth->user('username') ? $this->Auth->user('username') : $this->Auth->user('firstname') .' '. $this->Auth->user('lastname'); $data['email'] = $this->Auth->user('email'); } $comment = $this->Comments->newEntity($data); if ($comment = $this->Comments->save($comment)) { echo \json_encode(['comment' => [ 'id' => $comment->id, 'username' => $comment->username, 'content' => $comment->content, 'date' => $comment->created ]]); } else { echo \json_encode(['error' => 'Une erreur est survenue lors de la sauvegarde.']); } } }

J'ai testé en supprimant la validation des commentaires et j'ai le même comportement.
J'ai une relation classique : Users hasMany Comments, Users hasMany Posts et Comments belongsTo Users, Comments belongsTo Posts.

Une idée ?

Romain

3 réponses

Lartak, il y a 10 ans

Bonsoir.

il m'est impossible d'effectuer deux sauvegardes lorsque un utilisateur a déjà commenter un post

Et puis

En débugant différentes données ($data et $comment), je récupère bien les données et l'entité est créée correctement...

Contradictoire, non ?

antograssiot, il y a 10 ans

Bonsoir Romain, cela ressemble pourtant à de la validation. As-tu également supprimé les buildRules lorsque tu as désactivé la validation ?

Romano83, il y a 10 ans

@Lartak : oui, contradictoire mais c'est pourtant bien ce que j'ai... Une sauvegarde qui s'effectue et la deuxième qui retourne false...

@antograssiot : effectivement, c'était bien ça ! Je n'y avais pas pensé du tout. Merci !