Таблица комментариев, дающая SQLSTATE [42S02] laravel 5.8

Я пытаюсь создать форум, где пользователь может опубликовать тему, а в нижней части темы пользователь может прокомментировать тему, но когда я добавляю часть комментария в тему, она выдает ошибку SQLSTATE[42S02]. Я пытаюсь использовать отношения Morph. из laravel https://laravel.com/docs/5.8/eloquent-relationships, поэтому Я могу связать ветку с соответствующей веткой или комментарием. и конечный продукт должен быть чем-то вроде Reddits, http://prntscr.com/mwvors, где комментарии идут под друг друга и комментарий могут быть прокомментированы другими комментариями.

Изменить: после php artisan migrate он обновил миграцию, но вместо этого выдал эту ошибку

Ошибка

"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'comments.commmentable_id' in 'where clause' (SQL: select * from `comments` where `comments`.`commmentable_id` = 1 and `comments`.`commmentable_id` is not null and `comments`.`commmentable_type` = App\Thread) (View: C:\Users\Merlijn\AppData\Roaming\Composer\Laravel Projects\Forum\resources\views\thread\single.blade.php

single.blade.php

 {{--Answers/comments--}}
<div class="comment-list">
    @foreach($thread->comments as $comment)

        <h4>{{$comment->body}}</h4>
        <lead>{{$comment->user->name}}</lead>

    @endforeach
</div>
<div class="comment-form">
    <form action="{{ route('threadcomment.store', $thread->id) }}" method="post" role="form">
        {{csrf_field()}}
        <h4>Create Comment</h4>

        <div class="form-group">
            <input type="text" class="form-control" name="body" id="" placeholder="Input...">
        </div>

        <button type="submit" class="btn btn-primary">Comment</button>
    </form>
</div>

пользовательская модель

 public function threads(){
    return $this->hasMany(Thread::class);
}

модель резьбы

 public function user()
{

    return $this->belongsTo(User::class);

}

public function comments()
{

    return $this->morphMany(Comment::class,'commmentable');

}

модель комментария

 public function commenttable()
{

    return $this->morphTo();

}

public function user()
{

    return $this->belongsTo(User::class);

}

контроллер комментариев

  public function addThreadComment(Request $request, Thread $thread)
{

    $this->validate($request,[
        'body' => 'required|min:10|max:250'
    ]);

    $comment = new Comment();
    $comment->body = $request->body;
    $comment->user_id = auth()->user()->id;

    $thread->comments()->save($comment);

}

веб.php

 Route::resource('comment','CommentController', ['only' =>['update','destroy']]);
 Route::post('comment/create/{thread}','ThreadController@storeComment')->name('threadcommment.store');

person HashtagForgotName    schedule 12.03.2019    source источник
comment
Вы создали миграцию для таблицы комментариев и запустили php artisan migrate? Такое впечатление, что таблицы не существует.   -  person aynber    schedule 12.03.2019
comment
Я действительно забыл и обновил пост, но он продолжает выдавать ошибку SQL   -  person HashtagForgotName    schedule 12.03.2019
comment
Итак, существует ли в таблице столбец commmentable_id? Возможно, вам потребуется указать имена столбцов. Определение функции для morphMany — это public function morphMany($related, $name, $type = null, $id = null, $localKey = null), поэтому вам может потребоваться передать переменные id и localKey.   -  person aynber    schedule 12.03.2019
comment
добавьте документы One To One (Polymorphic), через которые вам не нужно ничего передавать, пока у вас есть $table->integer('commentable_id'); и $table->string('commentable_type');, и у меня есть эти 2 в моих миграциях, потому что там сказано, что я возьму их оба Документы laravel 5.8   -  person HashtagForgotName    schedule 12.03.2019


Ответы (1)


где опечатки в коде

 public function comments()
 {
 return $this- >morphMany(Comment::class,'commmentable');
 }

  Route::post('comment/create/{thread}','ThreadController@storeComment')->name('threadcommment.store');

тройной МММ вместо 2 мм

person HashtagForgotName    schedule 13.03.2019