Laravel未知专栏

时间:2017-06-04 19:57:41

标签: php sql laravel

我遇到此错误的问题:

https://pastebin.com/cgm5yq0P

这是我的表格:

https://pastebin.com/bSU5X5EC

这是我的web.php(路由控制器):

Route::post('/komentarz', 'VideosController@postComment');

这是我的VideoController postComment函数:

https://pastebin.com/SYbEjB8H

这是我的评论模型:

https://pastebin.com/SxHX6gTP

这是我的用户模型评论功能:

    public function comments() {
    return $this->hasMany('App\Comment');
}

这是我的视频模型评论功能:

public function comments(){ return $this->belongsToMany('App\Comment')->withTimestamps(); }

最后,迁移文件名为create_comments_table:

https://pastebin.com/2cHscQfq

我的路线:  https://pastebin.com/ki8FZ0C6 请帮帮我..我不知道有什么不对

2 个答案:

答案 0 :(得分:1)

你的外键错了。将迁移更改为此。

$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

$table->unsignedInteger('video_id');
$table->foreign('video_id')->references('id')->on('videos')->onDelete('cascade');

修改:这会添加评论并将其附加到视频和用户。

// model fillable property

protected $fillable = [
    'text', 'user_id', 'video_id',
];

// route
Route::post('/film/{id}/komentarz', 'VideosController@postComment');

// controller method
public function postComment(CreateCommentRequest $request, $id)
{
    $video = Video::findOrFail($id);

    $video->comments()->create([
        'text' => $request->text,
        'user_id' => auth()->id(),
    ]);

    return 'works';
}

// form
{!! Form::open(['url' => "/film/{$video->id}/komentarz", 'method' => 'post','class' => 'form-horizontal']) !!}
<div class="form-group">
    <div class="col-md-3 control-label">
        {!! Form::label('text', 'Treść komentarza:') !!}
    </div>
    <div class="col-md-8">
        {!! Form::textarea('text', null, ['class'=>'form-control', 'size' => '5x5']) !!}
    </div>
</div>
<div class="form-group">
    <div class="col-md-8 col-md-offset-3">
        {!! Form::submit('Dodaj', ['class'=>'btn btn-primary btn-comment']) !!}
    </div>
</div>
{!! Form::close() !!}

答案 1 :(得分:0)

在评论模型中,我在'fillable中看到'user',而不是'user_id'。我认为它应该是user_id。或者你可以使用

protected guarded = [];

而不是使用fillable数组。