2017-12-14 9 views
1

私はLaravelにはかなり新しく、ユーザーがFacebookのようなステータスを更新するソーシャルメディアウェブサイトを作成していましたが、それには画像が添付されているはずです。LARAVEL:サーバーにオプションの値 'Image'を挿入しようとしています

だから私はそれが私にこのエラーを与えるイメージせずにポストを送信史上とき:

SQLSTATE [23000]:整合性制約違反:1048列「イメージ」をNULLにすることはできません(SQL:storiesに挿入(body、あることを示しているimageuser_idupdated_atcreated_at)値(マイanmeのOS Ololade、、2、2017年12月14日午後02時00分08秒、2017年12月14日午後02時00分08秒))

画像の値はありません。しかし、私は移行ファイルを更新し、次のように画像をNULL可能にしました: $ table-> binary( 'image') - > nullable(); それは動作し、画像のアップロードはオプションになりますが、私のSQLデータベースをチェックすると、画像列の下のすべての値がnullであるため、画像をアップロードするたびにblobファイルが表示されません。

私はこのエラーを無効にする方法はありますか?つまり:画像がない場合は、ステータスを更新するか、コントローラーを介して画像データが必要でないという確認を渡すことができます。

ここ

が私のコードです:

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

画像が空であるかどうかを確認するためにクエリを実行する前に、まず条件を追加する必要があります。 –

答えて

1

私はそこisn`t $の画像($要求[ 'イメージ'])だと思います。 などPOST変数画像がありません。

次のようなヌルを許可するストーリーテーブルの画像フィールドを設定することができます。

変更表story変更点imageimage BLOB NULL;

0

'image'カラムをnullにすることはできません。あなたのフォームからイメージを渡すのではなく、毎回クエリで実行すると問題が発生します。

この問題を解決するために、あなたは、データベース内の画像のためにNULLを許可するか、またはあなたはそれが以下のように来ている場合にのみ画像を挿入する$request->hasFileで条件を追加する必要があります。リクエスト・イメージ・ファイルを取得するためlaravelで

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

あなたのご意見ありがとう –

+0

あなたは大歓迎です。助けがあれば私の答えを受け入れてください。 –

+0

残念ながら、私のレピュテーションレベルは低いです。あなたの答えを正しいものとしてマークすることはできません –

2

あなたはフォローアップのようにコード化します。あなたのimage列がnull値を得続ける理由

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

理由は、この行する必要があります:あなたの$request['image']リターンを何

$image = $request['image']; 

?それは文字列ですか?またはファイルですか?後者の場合は、そのファイルのコピーを作成してどこかに保管し、pathimage列に保存する必要があります。

関連する問題