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


antograssiot
Réponse acceptée

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

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 ?

Romano83
Auteur

@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 !