일반적인 오류입니다: 1364 필드 'user_id'에 기본값이 없습니다.

현재 사용자와 함께 user_id를 할당하려고 하는데 다음과 같은 오류가 발생합니다.

SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a 
default value (SQL: insert into `posts` (`updated_at`, `created_at`) 
values (2017-04-27 10:29:59, 2017-04-27 10:29:59))

내 방법은 다음과 같습니다.

//PostController
Post::create(request([
        'body' => request('body'),
        'title' => request('title'),
        'user_id' => auth()->id()
    ]));

이 필러블로

//Post Model
protected $fillable = ['title', 'body', 'user_id']

하지만 이 방법으로도 충분합니다.

//PostController
auth()->user()->publish(new Post(request(['title' ,'body']))); 

//Post Model
public function publish(Post $post)
{
    $this->posts()->save($post);
}

왜 실패하는지 아세요? ![여기에 이미지 설명 입력]]1

시도

'user_id' => auth()-> id 또는

'user_id' => Auth::user()->id를 입력합니다.

대신

'user_id' => auth()->id()
해설 (3)

다음과 같이 Auth::id()를 사용해 보십시오.

Post::create([ 'body' => request('body'), 'title' => request('title'), 'user_id' => Auth::id()]);

또한 컨트롤러 상단에 App\Http\Controllers\Auth와 같은 인증 파사드를 포함하는 것을 잊지 마세요.

해설 (1)

사용 print_r(Auth);

그런 다음 user_id / id 변수가 어떤 형식인지 확인하고 사용하십시오.

해설 (1)