2017-12-14 3 views
1

Ich bin ziemlich neu in Laravel und erstellt eine Social-Media-Website als Praxis, wo Benutzer ihren Status wie die Facebook-Sache aktualisieren, aber das Problem ist, dass es nicht jeder Beitrag ist das sollte ein Bild haben. SoLARAVEL: Ich versuche, optionale Wert 'Image' auf Server

wann immer ich einen Beitrag ohne ein Bild senden es gibt mir diese Fehlermeldung:

SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1048 Spalte 'Bild' nicht null sein kann (SQL: insert into stories (body, image, user_id, updated_at, created_at) Werte (My anme os Ololade,, 2, 2017.12.14 14.00.08, 2017-12-14 14:00:08))

Welche, dass es zeigt, ist kein Wert für das Bild. Allerdings habe ich die Migrationsdatei aktualisiert und das Bild so nullfähig gemacht: $ table-> binary ('image') -> nullable(); Es funktioniert und Bild hochladen wird optional, aber beim Überprüfen meiner SQL-Datenbank bekomme ich keine Blob-Datei zu sehen, wenn ich Bilder hochladen, da alle Werte unter der Bildspalte null ist.

Bitte gibt es eine Möglichkeit, diesen Fehler zu überschreiben Laravel gibt mir? Das heißt: Wenn es kein Bild gibt, sollte es weitergehen und den Status aktualisieren oder wenn ich eine Validierung über meinen Controller übergeben könnte, dass die Bilddaten nicht benötigt werden.

hier ist mein Code:

public function up() 
    { 
     Schema::create('stories', function (Blueprint $table) { 
      $table->increments('id'); 

      $table->text('body'); 
      $table->binary('image')-> 
      $table->integer('user_id'); 
      $table->timestamps(); 

     }); 
    } 

//Migrations file 




    public function createStory(Request $request){ 
      $image = $request['image']; 
      $story = new Story(); 
      $story->body = $request['body']; 
      $story->image = $image; 
      $request->user()->stories()->save($story); 
      return response()->json(['message' => 'Your Story has been posted']); 
     } 

    //The Function that creates a post 
+0

Sie müssen zuerst die Bedingung hinzufügen, bevor Sie die Abfrage ausführen, um zu prüfen, ob das Bild leer ist oder nicht. –

Antwort

1

ich es isn `t $ image denken ($ request [ 'Bild']). usw. gibt es kein POST-Variablenbild.

Sie können das Bildfeld in der Story-Tabelle festlegen, die null wie folgt zulässt.

ALTER TABELLE story ÄNDERUNG imageimage BLOB NULL;

0

Die Spalte 'image' kann nicht null sein Das Problem tritt auf, wenn Sie das Bild nicht von Ihrem Formular übergeben, sondern jedes Mal in der Abfrage ausführen.

Für dieses Problem zu lösen, können Sie entweder die Möglichkeit, NULL für Bild in der Datenbank oder Sie haben Bedingung hinzuzufügen mit $request->hasFile Bild einfügen nur, wenn sein wie unten kommend:

 $image = $request['image']; 
     $story = new Story(); 
     $story->body = $request['body']; 
     if($request->hasFile('image')){ 
      $story->image = $image; 
     } 
     $story->save(); 
+0

danke Ihr Kommentar half –

+0

Gern geschehen. Bitte akzeptiere meine Antwort, wenn es hilft. –

+0

Leider ist mein Reputationslevel niedrig .. Ich kann Ihre Antwort nicht als die richtige markieren –

2

In Laravel für Anfrage Bilddatei bekommen , dann wirst du wie folgt codieren.

$image = $request->file("image"); 
0

Der Grund, warum Ihre image Spalte immer NULL-Werte halten sollte diese Zeile sein:

$image = $request['image']; 

Was macht Ihr $request['image'] Rückkehr? Ist es eine Schnur? Oder eine Datei? Wenn es Letzteres ist, sollten Sie eine Kopie dieser Datei erstellen und sie irgendwo speichern, dann speichern Sie die path in Ihrer image Spalte.

Verwandte Themen