Bonjour,

Alors je reviens par mis vous car je n'arrive pas bien a comprendre le doc de Laravel.
J'aimerai faire une requete SLQ pour inserer des infos sur le champ d'un membre (token pour les reset).
Mais je me rends compte que je ne saispas comment je dois m'y prendre a la façon de Laravel.
Je sais faire les requete brute comme

//$query = $user->id
$random = str_random(60);
DB::insert('INSERT INTO users (id, reser_token) values(?, ?)', [$query, $random]);

D'ailleurs j'ai remqué que cette requete ne fonctionne pas :

//$query = $user->id
$random = str_random(60);
DB::insert('INSERT INTO users SET reser_token ? WHERE id = ?', [$query, $random]);

Est-ce normal ?

Je vous remercie pour votre aide =)

2 réponses


Lartak
Réponse acceptée

Bonjour.
J'ai surtout l'impression que tu confonds entre les instructions INSERT et UPDATE.
Pour rappel, INSERT permet de créer un nouvel enregistrement et UPDATE permet de mettre à jour un enregistrement existant.

Est-ce normal ?

Donc la réponse est oui, car en traduisant la requête que tu essaies de faire, tu demandes à créer un nouvel enregistrement sur un enregistrement déja existant, ce que SQL ne fera pas.
Tu ne peux pas coupler un __INSERT_ avec un WHERE__.
C'est donc soit INSERT INTO users (...) VALUES(...) ou UPDATE users SET champ = ? WHERE id = ?.
Par contre, fais attention à l'ordre des paramêtres que tu définies, surtout lorsqu'ils ne sont pas nommés.

Soulouf
Auteur

Je te remercie beaucoup de m'avoir aider ! =)
J'ai découvert juste par hasard en testant que je peux faire directement !

 $user->update([
               'reset_token' => null,
               'password' => bcrypt(request('password'))
           ]);

En plus j'avais complétement oublié que je peux aussi faire

            $user->reset_token = null;
            $user->password = bcrypt(request('password'));
            $user->save();

Ha je suis tellement revis de découvrir chaque jour a quel point Laravel me facilite la vie ! =)

Enore mierciiii !!