SQLSTATE [HY000]: общая ошибка: 1364 Поле 'author_id' не имеет значения по умолчанию

0

Я на самом деле новичок в Laravel Framework. Пытался опубликовать в базе данных Mysql, я получил ошибку в Author_id.

SQLSTATE [HY000]: общая ошибка: 1364 Поле 'author_id' не имеет значения по умолчанию.

Проверяли везде, но все усилия оказались безуспешными

Вот миграция

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        //$table->engine = "InnoDB";

        $table->increments('id');
        $table->integer('author_id')->unsigned();
        $table->foreign('author_id')->unique()->references('id')->on('users')->onDelete('restrict');
        $table->string('title');
        $table->string('slug')->unique();
        $table->text('excerpt');
        $table->text('body');
        $table->unsignedInteger('user_id');
        $table->string('image')->nullable();   
        $table->timestamps();
    });



}

Вот мой create.blade.php:

 <section class="content">
        <div class="row">
          <div class="col-xs-12">
            <div class="box">
              <div class="box-body">

              {!! Form::model($post, [
                    'method' => 'POST',
                    'url'  => 'backend/blog'
              ]) !!}  

             {{-- <form method="POST" action="{{ url('blog/store') }}" enctype="multipart/form-data">
                @csrf  --}}

                    <div class="form-group {{ $errors->has('title') ? 'has-error' : '' }}">
                        {!! Form::label('title') !!}
                        {!! Form::text('title', null, ['class' => 'form-control']) !!}

                        @if($errors->has('title'))
                        <span class="help-block">{{ $errors->first('title') }} </span>
                        @endif
                    </div>


                    <div class="form-group {{ $errors->has('slug') ? 'has-error' : '' }}">
                      {!! Form::label('slug') !!}
                      {!! Form::text('slug', null, ['class' => 'form-control'])!!}

                      @if($errors->has('slug'))
                      <span class="help-block">{{ $errors->first('slug') }} </span>
                      @endif
                      </div>

                        <div class="form-group {{ $errors->has('excerpt') ? 'has-error' : '' }}">
                          {!! Form::label('excerpt') !!}
                          {!! Form::textarea('excerpt', null, ['class' => 'form-control'])!!}

                        @if($errors->has('excerpt'))
                        <span class="help-block">{{ $errors->first('excerpt') }} </span>
                        @endif

                        </div>

                            <div class="form-group {{ $errors->has('body') ? 'has-error' : '' }}">
                              {!! Form::label('body') !!}
                              {!! Form::textarea('body', null, ['class' => 'form-control'])!!}

                        @if($errors->has('body'))
                        <span class="help-block">{{ $errors->first('body') }} </span>
                        @endif
                            </div>

                          <div class="form-group {{ $errors->has('published_at') ? 'has-error' : '' }}">
                            {!! Form::label('published_at', 'Published Date') !!}
                            {!! Form::text('published_at', null, ['class' => 'form-control', 'placeholder' => 'Y-m-d H:i:s'])!!}

                            @if($errors->has('published_at'))
                            <span class="help-block">{{ $errors->first('published_at') }} </span>
                            @endif
                            </div>

                        <div class="form-group {{ $errors->has('category_id') ? 'has-error' : '' }}">
                          {!! Form::label('category_id', 'Category') !!}
                          {!! Form::select('category_id', App\Category::pluck('title', 'id'), null, ['class' => 'form-control', 'placeholder' => 'Choose category' ]) !!}

                          @if($errors->has('category_id'))
                          <span class="help-block">{{ $errors->first('category_id') }} </span>
                          @endif
                        </div>

                        <hr>

                        {!! Form::submit('Create new post', ['class' => 'btn btn-primary']) !!}
                {!! Form::close() !!}
              </div>
              <!-- /.box-body -->
            </div>
            <!-- /.box -->
          </div>
        </div>
      <!-- ./row -->
    </section>

Вот моя модель сообщения:

class Post extends Model

{

protected $fillable = ['title', 'slug', 'excerpt', 'body', 'user_id', 'published_at', 'category_id'];
protected $dates = ['published_at'];

public function author()
{
    return $this->belongsTo(User::Class);
}

public function category()
{
    return $this->belongsTo(Category::class);
}
// images path
Public function getImageUrlAttribute($Value)
{
    $imageUrl = "";

if ( ! is_null($this->image))
{
    $imagePath = public_path(). "/img/" . $this->image;
    if (file_exists($imagePath)) $imageUrl = asset("img/" . $this->image);
}
return $imageUrl;

}

  • 0
    Вы должны добавить функцию nullable () следующим образом. $ Table-> целое число ( 'author_id') -> без знака () -> обнуляемым ();
  • 0
    Эта ошибка означает, что вы не заполняете данные author_id . Также это поле отсутствует в вашем массиве $fillable или вы должны указать это поле как обнуляемое при миграции.
Показать ещё 3 комментария
Теги:
eloquent
laravel-5.5
laravel-5.8

1 ответ

0

Например, чтобы связать публикацию с текущим пользователем (например, внутри метода контроллера, который сохраняет публикацию в БД), выполните следующее:

// controller method
public function savePost( Request $request )
{
    $data = $request->validate([
        // your validation rules here..
        ]);
    $post = new Post(); // from Post model
    $post->fill($data);
    $post->author()->associate(\Auth::user()); // relate post to current user
    $post->save(); // save to db
    return view('whatever_your_view_is', []);
}

Если вам нужна дополнительная информация, оставьте комментарий

  • 0
    Я не могу отблагодарить вас в Nikos M ... Я заметил, что теперь сохраняет в таблицу, но выдает мне эту ошибку, SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'user_id' в 'списке полей' (SQL: вставить в posts ( title , slug , .. Но у меня нет таблицы 'user_id' в моей таблице. Помогите мне, Никос
  • 0
    @ 365Techsolutions, обновленный ответ, дайте мне знать, если это решит вашу проблему
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню