Wenn ich versuche, die E-Mail-Spalte für den Benutzer zu aktualisieren, erhalte ich eine seltsame Eingabe in der Datenbank und verstehe nicht warum. Die Ausgabe in der E-Mail-Spalte in der Datenbank sieht ungefähr so ​​aus {"email":"try@gmail.com"} anstatt nur der E-Mail

HomeController

 protected function createMail(Request $request)
 {
      $data = request()->validate([
      'email' => 'required',
    ]);

      $id = Auth::guard('web')->id();
      User::where('id', $id)->update(['email' => $data]);
 }
-1
smartcoder 18 Aug. 2020 im 20:09

2 Antworten

Beste Antwort

$data wird in Ihrem Fall als Ergebnis der Funktion ->validate() definiert, Sie benötigen jedoch den Wert von E-Mail.

Auf den Wert kann mit $request->get('email') zugegriffen werden.

Ihre Funktion sollte also folgendermaßen aussehen:

protected function createMail(Request $request)
 {
      $this->validate($request, [
          'email' => 'required',
      ]);

      $id = Auth::guard('web')->id();
      User::where('id', $id)->update(['email' => $request->get('email')]);
 }
1
SviesusAlus 18 Aug. 2020 im 17:12

Sie aktualisieren den falschen Wert und es sollte so sein

protected function createMail(Request $request)
{
  $this->validate($request, [
      'email' => 'required',
  ]);

  $id = Auth::guard('web')->id();
  User::where('id', $id)->update(['email' => $request->get('email')]);
 }

Wie Sie sehen, request->get('email') anstelle von ['email' => $data]

0
Naveed Ali 18 Aug. 2020 im 17:26