2017-12-14 7 views
1

저는 Laravel에 매우 익숙하며 사용자가 페이스 북과 같은 상태를 업데이트하는 소셜 미디어 웹 사이트를 만들었지 만 문제는 모든 게시물이 아니라는 것입니다. 이미지에 첨부해야합니다. 내가 이미지없이 게시물을 보낼 어느 때LARAVEL : 서버에 선택적 값 'Image'를 삽입하려고합니다.

그래서 그것은 나에게 오류를 제공합니다

SQLSTATE [23000] : 무결성 제약 조건 위반 : 1,048 열 '이미지'널 (SQL 수 없습니다 : stories에 삽입 (body, 있다는 것을 나타낸다 image, user_id, updated_at, created_at) 값 (내 anme 운영체제 Ololade, 2 2017년 12월 14일 14시 0분 8초, 2017년 12월 14일 14시 0분 8초))

이미지에 대한 값이 없습니다. 그러나, 나는 마이 그 레이션 파일을 업데이트하고 다음과 같이 이미지를 nullable로 만들었습니다. $ table-> binary ('image') -> nullable(); 그것은 작동하고 이미지 업로드는 선택 사항이되지만 내 SQL 데이터베이스를 검사 할 때 이미지 열 아래의 모든 값이 null이므로 이미지를 업로드 할 때마다 blob 파일이 표시되지 않습니다.

이 오류를 무시하는 방법이 있습니까? laravel이 제공합니까? 즉 : 이미지가 없으면 상태를 업데이트해야합니다. 그렇지 않으면 컨트롤러를 통해 유효성 검사를 통과하여 이미지 데이터가 필요하지 않습니다.

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 변수 이미지가 없습니다.

다음과 같이 null을 허용하는 스토리 테이블에서 이미지 필드를 설정할 수 있습니다.

변경 테이블 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 = $request->file("image"); 
0

당신의 image 열이 줄 수 있어야 점점 널 (null) 값을 유지하는 이유 :

당신의 $request['image'] 수익을 무엇
$image = $request['image']; 

? 그것은 문자열인가? 아니면 파일? 후자 인 경우 해당 파일의 복사본을 만들어 어딘가에 저장 한 다음 을 image 열에 저장해야합니다.