添加ID到函数以防止非null错误

时间:2018-01-11 18:16:40

标签: php sql laravel function controller

我有添加评论的功能:

public function addComment(Request $request)
{
    $request->validate([
        'body' => 'required',
    ]);

    $entry = new Comment();
    $entry->body = $request->body;
    $entry->save();

    return redirect('/');
}

我还需要传入电影表id,在评论表中称为film_id。该字段不能为空。以上内容并未考虑此字段,因此我收到以下消息:

  

SQLSTATE [23000]:完整性约束违规:19 NOT NULL   约束失败:comments.film_id(SQL:插入“注释”   (“body”,“updated_at”,“created_at”)值

我试图通过做下面的变化来传递电影ID,但没有成功。

public function addComment(Request $request, $id)
{
    $request->validate([
        'body' => 'required',
        'film_id' => 'required',
    ]);

    $entry = new Comment();
    $film_id = Film::find($id);
    $entry->body = $request->body;
    $entry->film_id = $film_id;
    $entry->save();

    return redirect('/');

评论模型:

class Comment extends Model
{
    public function film()
    {
        return $this->belongsTo(Film::class);

    }
}

电影模特:

class Film extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

1 个答案:

答案 0 :(得分:2)

你没有传递id,你正在传递电影对象

.a

public function addComment(Request $request, $id)
{
   $film = Film::find($id);

   $entry = new Comment();       
   $entry->body = $request->body;
   $entry->film_id = $film->id;

   $entry->save(); //your comment is saved with proper film_id 
}